ruby-lint 1.1.0 → 2.0.0

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 (205) hide show
  1. checksums.yaml +4 -4
  2. data/CONTRIBUTING.md +43 -29
  3. data/LICENSE +1 -1
  4. data/README.md +0 -1
  5. data/bin/ruby-lint +91 -3
  6. data/checksum/ruby-lint-1.1.0.gem.sha512 +1 -0
  7. data/doc/changelog.md +30 -0
  8. data/doc/code_analysis.md +13 -0
  9. data/doc/configuration.md +5 -24
  10. data/lib/ruby-lint.rb +7 -10
  11. data/lib/ruby-lint/analysis/argument_amount.rb +2 -0
  12. data/lib/ruby-lint/analysis/base.rb +12 -0
  13. data/lib/ruby-lint/analysis/pedantics.rb +2 -0
  14. data/lib/ruby-lint/analysis/shadowing_variables.rb +2 -0
  15. data/lib/ruby-lint/analysis/undefined_methods.rb +5 -2
  16. data/lib/ruby-lint/analysis/undefined_variables.rb +2 -0
  17. data/lib/ruby-lint/analysis/unused_variables.rb +2 -0
  18. data/lib/ruby-lint/analysis/useless_equality_checks.rb +2 -0
  19. data/lib/ruby-lint/ast/node.rb +0 -15
  20. data/lib/ruby-lint/command.rb +100 -0
  21. data/lib/ruby-lint/configuration.rb +35 -66
  22. data/lib/ruby-lint/constant_path.rb +7 -2
  23. data/lib/ruby-lint/definition/ruby_object.rb +20 -6
  24. data/lib/ruby-lint/definitions/core/argf.rb +3 -3
  25. data/lib/ruby-lint/definitions/gems/minitest.rb +792 -0
  26. data/lib/ruby-lint/file_list.rb +1 -1
  27. data/lib/ruby-lint/file_loader.rb +2 -20
  28. data/lib/ruby-lint/file_scanner.rb +11 -2
  29. data/lib/ruby-lint/method_evaluation.rb +21 -0
  30. data/lib/ruby-lint/presenter/base.rb +18 -0
  31. data/lib/ruby-lint/presenter/json.rb +3 -1
  32. data/lib/ruby-lint/presenter/syntastic.rb +3 -1
  33. data/lib/ruby-lint/presenter/text.rb +3 -1
  34. data/lib/ruby-lint/runner.rb +6 -63
  35. data/lib/ruby-lint/variable_predicates.rb +3 -3
  36. data/lib/ruby-lint/version.rb +1 -1
  37. data/lib/ruby-lint/virtual_machine.rb +4 -1
  38. data/ruby-lint.gemspec +13 -4
  39. metadata +12 -187
  40. data/.editorconfig +0 -15
  41. data/.gitignore +0 -6
  42. data/.ruby-version +0 -1
  43. data/.travis.yml +0 -19
  44. data/Gemfile +0 -15
  45. data/MANIFEST +0 -469
  46. data/Rakefile +0 -25
  47. data/benchmark/bootup.rb +0 -13
  48. data/benchmark/virtual_machine.rb +0 -17
  49. data/checksum/.gitkeep +0 -0
  50. data/doc/.gitkeep +0 -0
  51. data/doc/css/.gitkeep +0 -0
  52. data/doc/images/.gitkeep +0 -0
  53. data/gen/rails/constants.txt +0 -12
  54. data/gen/rails/requires.rb +0 -2
  55. data/gen/stdlib/constants.rb +0 -30
  56. data/gen/stdlib/constants.txt +0 -214
  57. data/gen/stdlib/requires.rb +0 -64
  58. data/lib/ruby-lint/benchmark/average.rb +0 -115
  59. data/lib/ruby-lint/cache.rb +0 -121
  60. data/lib/ruby-lint/cache_entry.rb +0 -44
  61. data/lib/ruby-lint/cli.rb +0 -4
  62. data/lib/ruby-lint/cli/analyze.rb +0 -209
  63. data/lib/ruby-lint/cli/base.rb +0 -103
  64. data/lib/ruby-lint/cli/cache.rb +0 -60
  65. data/lib/ruby-lint/default_names.rb +0 -19
  66. data/lib/ruby-lint/definitions/gems/.gitkeep +0 -0
  67. data/lib/ruby-lint/node_hash.rb +0 -105
  68. data/misc/stdlib.rb +0 -66
  69. data/profiling/virtual_machine.rb +0 -20
  70. data/ruby-lint.yml +0 -7
  71. data/spec/fixtures/associating.rb +0 -7
  72. data/spec/fixtures/complex/rails/basic_controller.rb +0 -9
  73. data/spec/fixtures/complex/rcap.rb +0 -67
  74. data/spec/fixtures/complex/slop.rb +0 -701
  75. data/spec/fixtures/config.yml +0 -8
  76. data/spec/fixtures/deeply/nested/file.rb +0 -1
  77. data/spec/fixtures/file_scanner/lib/example/recursive/source.rb +0 -6
  78. data/spec/fixtures/file_scanner/lib/example/recursive/target.rb +0 -8
  79. data/spec/fixtures/file_scanner/lib/example/user.rb +0 -6
  80. data/spec/fixtures/file_scanner/lib/ruby-lint/definition/constant_proxy.rb +0 -6
  81. data/spec/fixtures/file_scanner/lib/ruby-lint/global_scope.rb +0 -6
  82. data/spec/fixtures/file_scanner/lib/test-dashes/foo.rb +0 -4
  83. data/spec/fixtures/file_scanner/rails/app/models/example/user.rb +0 -6
  84. data/spec/fixtures/file_scanner/rails/app/models/user.rb +0 -4
  85. data/spec/fixtures/invalid.rb +0 -3
  86. data/spec/fixtures/invalid_2.rb +0 -3
  87. data/spec/fixtures/syntax_error.rb +0 -1
  88. data/spec/fixtures/uses_external.rb +0 -1
  89. data/spec/fixtures/uses_external_invalid.rb +0 -3
  90. data/spec/fixtures/uses_external_namespace.rb +0 -1
  91. data/spec/fixtures/valid.rb +0 -3
  92. data/spec/ruby-lint/analysis/argument_amount_spec.rb +0 -131
  93. data/spec/ruby-lint/analysis/base_spec.rb +0 -24
  94. data/spec/ruby-lint/analysis/pedantics_spec.rb +0 -63
  95. data/spec/ruby-lint/analysis/shadowing_variables_spec.rb +0 -85
  96. data/spec/ruby-lint/analysis/undefined_methods_spec.rb +0 -337
  97. data/spec/ruby-lint/analysis/undefined_variables_spec.rb +0 -138
  98. data/spec/ruby-lint/analysis/unused_variables_spec.rb +0 -270
  99. data/spec/ruby-lint/analysis/useless_equality_checks_spec.rb +0 -107
  100. data/spec/ruby-lint/ast/node_spec.rb +0 -39
  101. data/spec/ruby-lint/cache_entry_spec.rb +0 -25
  102. data/spec/ruby-lint/cache_spec.rb +0 -53
  103. data/spec/ruby-lint/cli/analyze_spec.rb +0 -52
  104. data/spec/ruby-lint/configuration_spec.rb +0 -126
  105. data/spec/ruby-lint/constant_loader_spec.rb +0 -79
  106. data/spec/ruby-lint/constant_path.rb +0 -63
  107. data/spec/ruby-lint/definition/constant_proxy_spec.rb +0 -85
  108. data/spec/ruby-lint/definition/dsl_spec.rb +0 -135
  109. data/spec/ruby-lint/definition/registry_spec.rb +0 -106
  110. data/spec/ruby-lint/definition/ruby_method_spec.rb +0 -106
  111. data/spec/ruby-lint/definition/ruby_object_spec.rb +0 -264
  112. data/spec/ruby-lint/definition_builder/primitive_spec.rb +0 -62
  113. data/spec/ruby-lint/definition_builder/ruby_class_spec.rb +0 -107
  114. data/spec/ruby-lint/definition_builder/ruby_method_spec.rb +0 -53
  115. data/spec/ruby-lint/definition_builder/ruby_module_spec.rb +0 -52
  116. data/spec/ruby-lint/definitions/argv_spec.rb +0 -18
  117. data/spec/ruby-lint/definitions/env_spec.rb +0 -13
  118. data/spec/ruby-lint/definitions/file_spec.rb +0 -17
  119. data/spec/ruby-lint/definitions/fixnum_spec.rb +0 -18
  120. data/spec/ruby-lint/definitions/io_spec.rb +0 -15
  121. data/spec/ruby-lint/definitions/kernel_spec.rb +0 -18
  122. data/spec/ruby-lint/definitions/range_spec.rb +0 -21
  123. data/spec/ruby-lint/definitions/string_spec.rb +0 -20
  124. data/spec/ruby-lint/docstring/mapping.rb +0 -27
  125. data/spec/ruby-lint/docstring/parser_spec.rb +0 -88
  126. data/spec/ruby-lint/extensions/string_spec.rb +0 -7
  127. data/spec/ruby-lint/file_list_spec.rb +0 -25
  128. data/spec/ruby-lint/file_loader_spec.rb +0 -69
  129. data/spec/ruby-lint/file_scanner_spec.rb +0 -84
  130. data/spec/ruby-lint/inspector_spec.rb +0 -224
  131. data/spec/ruby-lint/iterator_spec.rb +0 -151
  132. data/spec/ruby-lint/method_call/.gitkeep +0 -0
  133. data/spec/ruby-lint/nested_stack_spec.rb +0 -23
  134. data/spec/ruby-lint/node_hash_spec.rb +0 -56
  135. data/spec/ruby-lint/parser_spec.rb +0 -38
  136. data/spec/ruby-lint/presenter/json_spec.rb +0 -58
  137. data/spec/ruby-lint/presenter/syntastic_spec.rb +0 -49
  138. data/spec/ruby-lint/presenter/text_spec.rb +0 -49
  139. data/spec/ruby-lint/report/entry_spec.rb +0 -58
  140. data/spec/ruby-lint/report_spec.rb +0 -39
  141. data/spec/ruby-lint/runner_spec.rb +0 -74
  142. data/spec/ruby-lint/variable_predicates_spec.rb +0 -30
  143. data/spec/ruby-lint/virtual_machine/alias_spec.rb +0 -55
  144. data/spec/ruby-lint/virtual_machine/assignments/arrays_spec.rb +0 -87
  145. data/spec/ruby-lint/virtual_machine/assignments/assignment_arguments_spec.rb +0 -14
  146. data/spec/ruby-lint/virtual_machine/assignments/constants_spec.rb +0 -23
  147. data/spec/ruby-lint/virtual_machine/assignments/hashes_spec.rb +0 -52
  148. data/spec/ruby-lint/virtual_machine/assignments/optional_spec.rb +0 -41
  149. data/spec/ruby-lint/virtual_machine/assignments/range_spec.rb +0 -28
  150. data/spec/ruby-lint/virtual_machine/assignments/return_values_spec.rb +0 -78
  151. data/spec/ruby-lint/virtual_machine/assignments/variables_spec.rb +0 -130
  152. data/spec/ruby-lint/virtual_machine/associate_nodes_spec.rb +0 -61
  153. data/spec/ruby-lint/virtual_machine/autoloading_spec.rb +0 -18
  154. data/spec/ruby-lint/virtual_machine/blocks_spec.rb +0 -90
  155. data/spec/ruby-lint/virtual_machine/classes/class_methods_spec.rb +0 -21
  156. data/spec/ruby-lint/virtual_machine/classes/extending_spec.rb +0 -109
  157. data/spec/ruby-lint/virtual_machine/classes/redefining_spec.rb +0 -51
  158. data/spec/ruby-lint/virtual_machine/classes/sclass_spec.rb +0 -96
  159. data/spec/ruby-lint/virtual_machine/classes/scoping_spec.rb +0 -60
  160. data/spec/ruby-lint/virtual_machine/complex/rails_spec.rb +0 -21
  161. data/spec/ruby-lint/virtual_machine/complex/rcap_spec.rb +0 -15
  162. data/spec/ruby-lint/virtual_machine/complex/slop_spec.rb +0 -16
  163. data/spec/ruby-lint/virtual_machine/constants_spec.rb +0 -31
  164. data/spec/ruby-lint/virtual_machine/for_spec.rb +0 -16
  165. data/spec/ruby-lint/virtual_machine/freeze_spec.rb +0 -13
  166. data/spec/ruby-lint/virtual_machine/global_variables_spec.rb +0 -15
  167. data/spec/ruby-lint/virtual_machine/inherit_kernel_spec.rb +0 -15
  168. data/spec/ruby-lint/virtual_machine/interpolation_spec.rb +0 -12
  169. data/spec/ruby-lint/virtual_machine/location_spec.rb +0 -64
  170. data/spec/ruby-lint/virtual_machine/method_call_tracking_spec.rb +0 -57
  171. data/spec/ruby-lint/virtual_machine/methods/attr_spec.rb +0 -182
  172. data/spec/ruby-lint/virtual_machine/methods/calls_spec.rb +0 -25
  173. data/spec/ruby-lint/virtual_machine/methods/define_method_spec.rb +0 -41
  174. data/spec/ruby-lint/virtual_machine/methods/defining_spec.rb +0 -40
  175. data/spec/ruby-lint/virtual_machine/methods/docstrings_spec.rb +0 -80
  176. data/spec/ruby-lint/virtual_machine/methods/exporting_spec.rb +0 -19
  177. data/spec/ruby-lint/virtual_machine/methods/kernel_spec.rb +0 -25
  178. data/spec/ruby-lint/virtual_machine/methods/parameters_spec.rb +0 -89
  179. data/spec/ruby-lint/virtual_machine/methods/patching_spec.rb +0 -20
  180. data/spec/ruby-lint/virtual_machine/methods/scoping_spec.rb +0 -63
  181. data/spec/ruby-lint/virtual_machine/methods/square_bracket_spec.rb +0 -32
  182. data/spec/ruby-lint/virtual_machine/methods/visibility_spec.rb +0 -64
  183. data/spec/ruby-lint/virtual_machine/modules_spec.rb +0 -205
  184. data/spec/ruby-lint/virtual_machine/reference_amount_spec.rb +0 -81
  185. data/spec/ruby-lint/virtual_machine/self_spec.rb +0 -37
  186. data/spec/ruby-lint/virtual_machine/unused_spec.rb +0 -17
  187. data/spec/spec_helper.rb +0 -28
  188. data/spec/support/building.rb +0 -50
  189. data/spec/support/coveralls.rb +0 -5
  190. data/spec/support/definitions.rb +0 -39
  191. data/spec/support/fixtures.rb +0 -20
  192. data/spec/support/parsing.rb +0 -30
  193. data/spec/support/simplecov.rb +0 -18
  194. data/spec/support/versions.rb +0 -9
  195. data/task/build.rake +0 -4
  196. data/task/checksum.rake +0 -13
  197. data/task/coverage.rake +0 -6
  198. data/task/doc.rake +0 -16
  199. data/task/generate.rake +0 -77
  200. data/task/graphviz.rake +0 -12
  201. data/task/manifest.rake +0 -8
  202. data/task/tag.rake +0 -6
  203. data/task/test.rake +0 -4
  204. data/task/todo.rake +0 -6
  205. data/task/travis.rake +0 -8
@@ -23,7 +23,7 @@ module RubyLint
23
23
  existing = existing | glob_files(file)
24
24
 
25
25
  else
26
- raise Errno::ENOENT, "The file/directory #{file} does not exist"
26
+ raise Errno::ENOENT, file
27
27
  end
28
28
  end
29
29
 
@@ -20,14 +20,11 @@ module RubyLint
20
20
  # @return [Array] A list of extra nodes (and their comments) a VM instance
21
21
  # should process before processing the file being analyzed.
22
22
  #
23
- # @!attribute [r] debug
24
- # @return [TrueClass|FalseClass]
25
- #
26
23
  # @!attribute [r] paths
27
24
  # @return [Set]
28
25
  #
29
26
  class FileLoader < Iterator
30
- attr_reader :file_scanner, :parser, :nodes, :comments, :debug, :paths
27
+ attr_reader :file_scanner, :parser, :nodes, :comments, :paths
31
28
 
32
29
  ##
33
30
  # Called after a new instance of this class is created.
@@ -55,8 +52,6 @@ module RubyLint
55
52
 
56
53
  paths << path
57
54
 
58
- debug_message("Processing extra file: #{path}")
59
-
60
55
  process_file(last_name, path)
61
56
  end
62
57
  end
@@ -70,13 +65,7 @@ module RubyLint
70
65
  def process_file(constant_name, path)
71
66
  code = File.read(path)
72
67
 
73
- unless code.include?(constant_name)
74
- debug_message(
75
- %Q{ Skipping since "#{constant_name}" was not found in this file}
76
- )
77
-
78
- return
79
- end
68
+ return unless code.include?(constant_name)
80
69
 
81
70
  ast, comments = parser.parse(code, path)
82
71
 
@@ -84,12 +73,5 @@ module RubyLint
84
73
 
85
74
  nodes << [ast, comments]
86
75
  end
87
-
88
- ##
89
- # @param [String] message
90
- #
91
- def debug_message(message)
92
- STDERR.puts(message) if debug
93
- end
94
76
  end # FileLoader
95
77
  end # RubyLint
@@ -114,6 +114,11 @@ module RubyLint
114
114
  # @return [Array]
115
115
  #
116
116
  def match_globbed_files(segment)
117
+ # Ensure that we match entire path segments. Just using the segment would
118
+ # result in partial filename matching (e.g. "foo.rb" matching
119
+ # "bar_foo.rb"). We don't want that.
120
+ segment = "/#{segment}"
121
+
117
122
  return @glob_cache.select { |p| p.include?(segment) }
118
123
  end
119
124
 
@@ -138,9 +143,13 @@ module RubyLint
138
143
  def constant_to_dashed_path(constant)
139
144
  segments = constant.split('::')
140
145
  last = segments[-1]
141
- path = segments[0..-2].join('/').snake_case.gsub('_', '-')
146
+ prefix = segments[0..-2].join('/').snake_case.gsub('_', '-')
147
+
148
+ unless prefix.empty?
149
+ prefix += '/'
150
+ end
142
151
 
143
- return "#{path}/#{last.snake_case}.rb"
152
+ return "#{prefix}#{last.snake_case}.rb"
144
153
  end
145
154
 
146
155
  ##
@@ -0,0 +1,21 @@
1
+ module RubyLint
2
+ ##
3
+ # Mixin that provides helper methods for handling method calls.
4
+ #
5
+ module MethodEvaluation
6
+ ##
7
+ # Given a `(block)` node this method returns the nested `(send)` node. If
8
+ # the supplied node is not a block it is returned directly.
9
+ #
10
+ # This method is mostly useful for dealing with method calls that take a
11
+ # block. In these cases the AST is in the form of `(block (send))` instead
12
+ # of `(send (block))`.
13
+ #
14
+ # @param [RubyLint::AST::Node] node
15
+ # @return [RubyLint::AST::Node]
16
+ #
17
+ def unpack_block(node)
18
+ return node && node.block? ? node.children[0] : node
19
+ end
20
+ end # MethodEvaluation
21
+ end # RubyLint
@@ -0,0 +1,18 @@
1
+ module RubyLint
2
+ module Presenter
3
+ ##
4
+ # Base presenter class that provides some commonly used methods.
5
+ #
6
+ class Base
7
+ ##
8
+ # Registers the presenter in
9
+ # {RubyLint::Configuration.available_presenters}.
10
+ #
11
+ # @param [String] name
12
+ #
13
+ def self.register(name)
14
+ Configuration.available_presenters[name] = self
15
+ end
16
+ end # Base
17
+ end # Presenter
18
+ end # RubyLint
@@ -4,7 +4,9 @@ module RubyLint
4
4
  # {RubyLint::Presenter::JSON} formats a instance of {RubyLint::Report} into
5
5
  # a JSON formatted string.
6
6
  #
7
- class JSON
7
+ class JSON < Base
8
+ register 'json'
9
+
8
10
  ##
9
11
  # @param [RubyLint::Report] report The report to present.
10
12
  # @return [String]
@@ -4,7 +4,9 @@ module RubyLint
4
4
  # Presenter that formats output that can be easily used in Syntastic
5
5
  # plugins.
6
6
  #
7
- class Syntastic
7
+ class Syntastic < Base
8
+ register 'syntastic'
9
+
8
10
  ##
9
11
  # The format to use for each entry.
10
12
  #
@@ -4,7 +4,9 @@ module RubyLint
4
4
  # {RubyLint::Presenter::Text} formats a instance of {RubyLint::Report} into
5
5
  # a text based, human readable format.
6
6
  #
7
- class Text
7
+ class Text < Base
8
+ register 'text'
9
+
8
10
  ##
9
11
  # The default format to use when presenting report entries.
10
12
  #
@@ -7,20 +7,14 @@ module RubyLint
7
7
  # @!attribute [r] configuration
8
8
  # @return [RubyLint::Configuration]
9
9
  #
10
- # @!attribute [r] cache
11
- # @return [RubyLint::Cache]
12
- #
13
10
  class Runner
14
- attr_reader :configuration, :cache
11
+ attr_reader :configuration
15
12
 
16
13
  ##
17
14
  # @param [RubyLint::Configuration] configuration
18
15
  #
19
16
  def initialize(configuration)
20
17
  @configuration = configuration
21
- @cache = Cache.new(configuration.cache_directory)
22
-
23
- @cache.create_directory! if configuration.enable_cache
24
18
  end
25
19
 
26
20
  ##
@@ -81,9 +75,7 @@ module RubyLint
81
75
  # @return [Array]
82
76
  #
83
77
  def parse_file(parser, file)
84
- ast, comments = parser.parse(File.read(file), file)
85
-
86
- return ast, NodeHash.from_hash(comments)
78
+ return parser.parse(File.read(file), file)
87
79
  end
88
80
 
89
81
  ##
@@ -95,32 +87,22 @@ module RubyLint
95
87
  # @return [Array]
96
88
  #
97
89
  def process_external_files(root_ast)
98
- if cached_values = get_cache(root_ast)
99
- return cached_values
100
- end
101
-
102
90
  loader = FileLoader.new(
103
91
  :directories => configuration.directories,
104
- :ignore_paths => configuration.ignore_paths,
105
- :debug => configuration.debug
92
+ :ignore_paths => configuration.ignore_paths
106
93
  )
107
94
 
108
95
  nodes = []
109
- mtimes = {}
110
- comments = NodeHash.new
96
+ comments = {}
111
97
 
112
98
  loader.iterate(root_ast)
113
99
 
114
100
  loader.nodes.each do |(ast, comment_associations)|
115
101
  nodes << ast
116
102
 
117
- mtimes[ast.file] = File.mtime(ast.file) if configuration.enable_cache
118
-
119
- comments.merge_hash!(comment_associations)
103
+ comments.merge!(comment_associations)
120
104
  end
121
105
 
122
- set_cache(root_ast, nodes, comments, mtimes)
123
-
124
106
  return nodes, comments
125
107
  end
126
108
 
@@ -130,7 +112,7 @@ module RubyLint
130
112
  #
131
113
  def report_diagnostic(diagnostic, report)
132
114
  report.add(
133
- :level => :error,
115
+ :level => diagnostic.level,
134
116
  :message => diagnostic.message,
135
117
  :line => diagnostic.location.line,
136
118
  :column => diagnostic.location.column + 1,
@@ -173,44 +155,5 @@ module RubyLint
173
155
  instance.iterate(ast)
174
156
  end
175
157
  end
176
-
177
- ##
178
- # Checks if the AST node has a cache file and if so returns the nodes and
179
- # comments that are cached.
180
- #
181
- # @param [RubyLint::AST::Node] node
182
- # @return [Array]
183
- #
184
- def get_cache(node)
185
- return unless configuration.enable_cache
186
-
187
- cache_name = node.sha1
188
-
189
- if cache.exists?(cache_name)
190
- entry = cache.get(cache_name)
191
-
192
- if entry.valid?
193
- return entry.nodes, entry.comments
194
- else
195
- cache.delete(cache_name)
196
- end
197
- end
198
-
199
- return
200
- end
201
-
202
- ##
203
- # Caches the values for the given node.
204
- #
205
- # @param [RubyLint::AST::Node] node
206
- # @param [Array] nodes
207
- # @param [RubyLint::NodeHash] comments
208
- # @param [Hash] mtimes
209
- #
210
- def set_cache(node, nodes, comments, mtimes)
211
- return unless configuration.enable_cache
212
-
213
- cache.set(node.sha1, CacheEntry.new(nodes, comments, mtimes))
214
- end
215
158
  end # Runner
216
159
  end # RubyLint
@@ -41,9 +41,9 @@ module RubyLint
41
41
  #
42
42
  VARIABLE_TYPES = [:lvar, :ivar, :cvar, :gvar]
43
43
 
44
- PREDICATE_METHODS.each do |type|
45
- define_method("#{type}?") do
46
- return @type == type
44
+ PREDICATE_METHODS.each do |method|
45
+ define_method("#{method}?") do
46
+ return type == method
47
47
  end
48
48
  end
49
49
 
@@ -1,3 +1,3 @@
1
1
  module RubyLint
2
- VERSION = '1.1.0'
2
+ VERSION = '2.0.0'
3
3
  end # RubyLint
@@ -70,6 +70,8 @@ module RubyLint
70
70
  # @return [RubyLint::Docstring::Mapping]
71
71
  #
72
72
  class VirtualMachine < Iterator
73
+ include MethodEvaluation
74
+
73
75
  attr_reader :associations,
74
76
  :comments,
75
77
  :definitions,
@@ -651,6 +653,7 @@ module RubyLint
651
653
  def after_send(node)
652
654
  receiver, name, _ = *node
653
655
 
656
+ receiver = unpack_block(receiver)
654
657
  name = name.to_s
655
658
  args_length = node.children[2..-1].length
656
659
  values = value_stack.pop
@@ -670,7 +673,7 @@ Received: #{arguments.length}
670
673
 
671
674
  # Associate the argument definitions with their nodes.
672
675
  arguments.each_with_index do |obj, index|
673
- arg_node = node.children[2 + index]
676
+ arg_node = unpack_block(node.children[2 + index])
674
677
 
675
678
  associate_node(arg_node, obj)
676
679
  end
@@ -9,13 +9,23 @@ Gem::Specification.new do |s|
9
9
  s.summary = 'A linter and static code analysis tool for Ruby.'
10
10
  s.homepage = 'https://github.com/yorickpeterse/ruby-lint/'
11
11
  s.description = s.summary
12
- s.executables = ['ruby-lint']
13
12
  s.license = 'MIT'
14
13
 
15
14
  s.post_install_message = 'Please report any issues at: ' \
16
15
  'https://github.com/YorickPeterse/ruby-lint/issues/new'
17
16
 
18
- s.files = File.read(File.expand_path('../MANIFEST', __FILE__)).split("\n")
17
+ s.files = Dir.glob([
18
+ 'checksum/*.*',
19
+ 'doc/**/*.*',
20
+ 'lib/**/*.*',
21
+ '.yardopts',
22
+ 'CONTRIBUTING.md',
23
+ 'LICENSE',
24
+ 'README.md',
25
+ '*.gemspec'
26
+ ])
27
+
28
+ s.executables = ['ruby-lint']
19
29
 
20
30
  s.has_rdoc = 'yard'
21
31
  s.required_ruby_version = '>= 1.9.3'
@@ -24,10 +34,9 @@ Gem::Specification.new do |s|
24
34
  s.add_dependency 'slop', ['~> 3.4', '>= 3.4.7']
25
35
 
26
36
  s.add_development_dependency 'rake'
27
- s.add_development_dependency 'rspec', ['>= 2.14']
37
+ s.add_development_dependency 'rspec', '~> 3.0'
28
38
  s.add_development_dependency 'yard'
29
39
  s.add_development_dependency 'simplecov'
30
- s.add_development_dependency 'coveralls'
31
40
  s.add_development_dependency 'json'
32
41
  s.add_development_dependency 'kramdown'
33
42
  s.add_development_dependency 'redcard'
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: 1.1.0
4
+ version: 2.0.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: 2014-02-02 00:00:00.000000000 Z
11
+ date: 2014-06-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: parser
@@ -68,16 +68,16 @@ dependencies:
68
68
  name: rspec
69
69
  requirement: !ruby/object:Gem::Requirement
70
70
  requirements:
71
- - - ">="
71
+ - - "~>"
72
72
  - !ruby/object:Gem::Version
73
- version: '2.14'
73
+ version: '3.0'
74
74
  type: :development
75
75
  prerelease: false
76
76
  version_requirements: !ruby/object:Gem::Requirement
77
77
  requirements:
78
- - - ">="
78
+ - - "~>"
79
79
  - !ruby/object:Gem::Version
80
- version: '2.14'
80
+ version: '3.0'
81
81
  - !ruby/object:Gem::Dependency
82
82
  name: yard
83
83
  requirement: !ruby/object:Gem::Requirement
@@ -106,20 +106,6 @@ dependencies:
106
106
  - - ">="
107
107
  - !ruby/object:Gem::Version
108
108
  version: '0'
109
- - !ruby/object:Gem::Dependency
110
- name: coveralls
111
- requirement: !ruby/object:Gem::Requirement
112
- requirements:
113
- - - ">="
114
- - !ruby/object:Gem::Version
115
- version: '0'
116
- type: :development
117
- prerelease: false
118
- version_requirements: !ruby/object:Gem::Requirement
119
- requirements:
120
- - - ">="
121
- - !ruby/object:Gem::Version
122
- version: '0'
123
109
  - !ruby/object:Gem::Dependency
124
110
  name: json
125
111
  requirement: !ruby/object:Gem::Requirement
@@ -169,21 +155,11 @@ executables:
169
155
  extensions: []
170
156
  extra_rdoc_files: []
171
157
  files:
172
- - ".editorconfig"
173
- - ".gitignore"
174
- - ".ruby-version"
175
- - ".travis.yml"
176
158
  - ".yardopts"
177
159
  - CONTRIBUTING.md
178
- - Gemfile
179
160
  - LICENSE
180
- - MANIFEST
181
161
  - README.md
182
- - Rakefile
183
- - benchmark/bootup.rb
184
- - benchmark/virtual_machine.rb
185
162
  - bin/ruby-lint
186
- - checksum/.gitkeep
187
163
  - checksum/ruby-lint-0.0.3.gem.sha512
188
164
  - checksum/ruby-lint-0.0.4.gem.sha512
189
165
  - checksum/ruby-lint-0.0.5.gem.sha512
@@ -194,23 +170,16 @@ files:
194
170
  - checksum/ruby-lint-1.0.1.gem.sha512
195
171
  - checksum/ruby-lint-1.0.2.gem.sha512
196
172
  - checksum/ruby-lint-1.0.3.gem.sha512
197
- - doc/.gitkeep
173
+ - checksum/ruby-lint-1.1.0.gem.sha512
198
174
  - doc/DCO.md
199
175
  - doc/architecture.md
200
176
  - doc/changelog.md
201
177
  - doc/code_analysis.md
202
178
  - doc/configuration.md
203
- - doc/css/.gitkeep
204
179
  - doc/css/common.css
205
180
  - doc/definitions.md
206
181
  - doc/graphviz/flow.dot
207
- - doc/images/.gitkeep
208
182
  - doc/images/flow.png
209
- - gen/rails/constants.txt
210
- - gen/rails/requires.rb
211
- - gen/stdlib/constants.rb
212
- - gen/stdlib/constants.txt
213
- - gen/stdlib/requires.rb
214
183
  - lib/ruby-lint.rb
215
184
  - lib/ruby-lint/analysis/argument_amount.rb
216
185
  - lib/ruby-lint/analysis/base.rb
@@ -222,17 +191,10 @@ files:
222
191
  - lib/ruby-lint/analysis/useless_equality_checks.rb
223
192
  - lib/ruby-lint/ast/builder.rb
224
193
  - lib/ruby-lint/ast/node.rb
225
- - lib/ruby-lint/benchmark/average.rb
226
- - lib/ruby-lint/cache.rb
227
- - lib/ruby-lint/cache_entry.rb
228
- - lib/ruby-lint/cli.rb
229
- - lib/ruby-lint/cli/analyze.rb
230
- - lib/ruby-lint/cli/base.rb
231
- - lib/ruby-lint/cli/cache.rb
194
+ - lib/ruby-lint/command.rb
232
195
  - lib/ruby-lint/configuration.rb
233
196
  - lib/ruby-lint/constant_loader.rb
234
197
  - lib/ruby-lint/constant_path.rb
235
- - lib/ruby-lint/default_names.rb
236
198
  - lib/ruby-lint/definition/constant_proxy.rb
237
199
  - lib/ruby-lint/definition/registry.rb
238
200
  - lib/ruby-lint/definition/ruby_method.rb
@@ -450,8 +412,8 @@ files:
450
412
  - lib/ruby-lint/definitions/core/yaml.rb
451
413
  - lib/ruby-lint/definitions/core/zero_division_error.rb
452
414
  - lib/ruby-lint/definitions/core/zlib.rb
453
- - lib/ruby-lint/definitions/gems/.gitkeep
454
415
  - lib/ruby-lint/definitions/gems/devise.rb
416
+ - lib/ruby-lint/definitions/gems/minitest.rb
455
417
  - lib/ruby-lint/definitions/gems/nokogiri.rb
456
418
  - lib/ruby-lint/definitions/rails/abstract_controller.rb
457
419
  - lib/ruby-lint/definitions/rails/action_controller.rb
@@ -483,9 +445,10 @@ files:
483
445
  - lib/ruby-lint/method_call/define_method.rb
484
446
  - lib/ruby-lint/method_call/include.rb
485
447
  - lib/ruby-lint/method_call_info.rb
448
+ - lib/ruby-lint/method_evaluation.rb
486
449
  - lib/ruby-lint/nested_stack.rb
487
- - lib/ruby-lint/node_hash.rb
488
450
  - lib/ruby-lint/parser.rb
451
+ - lib/ruby-lint/presenter/base.rb
489
452
  - lib/ruby-lint/presenter/json.rb
490
453
  - lib/ruby-lint/presenter/syntastic.rb
491
454
  - lib/ruby-lint/presenter/text.rb
@@ -499,145 +462,7 @@ files:
499
462
  - lib/ruby-lint/variable_predicates.rb
500
463
  - lib/ruby-lint/version.rb
501
464
  - lib/ruby-lint/virtual_machine.rb
502
- - misc/stdlib.rb
503
- - profiling/virtual_machine.rb
504
465
  - ruby-lint.gemspec
505
- - ruby-lint.yml
506
- - spec/fixtures/associating.rb
507
- - spec/fixtures/complex/rails/basic_controller.rb
508
- - spec/fixtures/complex/rcap.rb
509
- - spec/fixtures/complex/slop.rb
510
- - spec/fixtures/config.yml
511
- - spec/fixtures/deeply/nested/file.rb
512
- - spec/fixtures/file_scanner/lib/example/recursive/source.rb
513
- - spec/fixtures/file_scanner/lib/example/recursive/target.rb
514
- - spec/fixtures/file_scanner/lib/example/user.rb
515
- - spec/fixtures/file_scanner/lib/ruby-lint/definition/constant_proxy.rb
516
- - spec/fixtures/file_scanner/lib/ruby-lint/global_scope.rb
517
- - spec/fixtures/file_scanner/lib/test-dashes/foo.rb
518
- - spec/fixtures/file_scanner/rails/app/models/example/user.rb
519
- - spec/fixtures/file_scanner/rails/app/models/user.rb
520
- - spec/fixtures/invalid.rb
521
- - spec/fixtures/invalid_2.rb
522
- - spec/fixtures/syntax_error.rb
523
- - spec/fixtures/uses_external.rb
524
- - spec/fixtures/uses_external_invalid.rb
525
- - spec/fixtures/uses_external_namespace.rb
526
- - spec/fixtures/valid.rb
527
- - spec/ruby-lint/analysis/argument_amount_spec.rb
528
- - spec/ruby-lint/analysis/base_spec.rb
529
- - spec/ruby-lint/analysis/pedantics_spec.rb
530
- - spec/ruby-lint/analysis/shadowing_variables_spec.rb
531
- - spec/ruby-lint/analysis/undefined_methods_spec.rb
532
- - spec/ruby-lint/analysis/undefined_variables_spec.rb
533
- - spec/ruby-lint/analysis/unused_variables_spec.rb
534
- - spec/ruby-lint/analysis/useless_equality_checks_spec.rb
535
- - spec/ruby-lint/ast/node_spec.rb
536
- - spec/ruby-lint/cache_entry_spec.rb
537
- - spec/ruby-lint/cache_spec.rb
538
- - spec/ruby-lint/cli/analyze_spec.rb
539
- - spec/ruby-lint/configuration_spec.rb
540
- - spec/ruby-lint/constant_loader_spec.rb
541
- - spec/ruby-lint/constant_path.rb
542
- - spec/ruby-lint/definition/constant_proxy_spec.rb
543
- - spec/ruby-lint/definition/dsl_spec.rb
544
- - spec/ruby-lint/definition/registry_spec.rb
545
- - spec/ruby-lint/definition/ruby_method_spec.rb
546
- - spec/ruby-lint/definition/ruby_object_spec.rb
547
- - spec/ruby-lint/definition_builder/primitive_spec.rb
548
- - spec/ruby-lint/definition_builder/ruby_class_spec.rb
549
- - spec/ruby-lint/definition_builder/ruby_method_spec.rb
550
- - spec/ruby-lint/definition_builder/ruby_module_spec.rb
551
- - spec/ruby-lint/definitions/argv_spec.rb
552
- - spec/ruby-lint/definitions/env_spec.rb
553
- - spec/ruby-lint/definitions/file_spec.rb
554
- - spec/ruby-lint/definitions/fixnum_spec.rb
555
- - spec/ruby-lint/definitions/io_spec.rb
556
- - spec/ruby-lint/definitions/kernel_spec.rb
557
- - spec/ruby-lint/definitions/range_spec.rb
558
- - spec/ruby-lint/definitions/string_spec.rb
559
- - spec/ruby-lint/docstring/mapping.rb
560
- - spec/ruby-lint/docstring/parser_spec.rb
561
- - spec/ruby-lint/extensions/string_spec.rb
562
- - spec/ruby-lint/file_list_spec.rb
563
- - spec/ruby-lint/file_loader_spec.rb
564
- - spec/ruby-lint/file_scanner_spec.rb
565
- - spec/ruby-lint/inspector_spec.rb
566
- - spec/ruby-lint/iterator_spec.rb
567
- - spec/ruby-lint/method_call/.gitkeep
568
- - spec/ruby-lint/nested_stack_spec.rb
569
- - spec/ruby-lint/node_hash_spec.rb
570
- - spec/ruby-lint/parser_spec.rb
571
- - spec/ruby-lint/presenter/json_spec.rb
572
- - spec/ruby-lint/presenter/syntastic_spec.rb
573
- - spec/ruby-lint/presenter/text_spec.rb
574
- - spec/ruby-lint/report/entry_spec.rb
575
- - spec/ruby-lint/report_spec.rb
576
- - spec/ruby-lint/runner_spec.rb
577
- - spec/ruby-lint/variable_predicates_spec.rb
578
- - spec/ruby-lint/virtual_machine/alias_spec.rb
579
- - spec/ruby-lint/virtual_machine/assignments/arrays_spec.rb
580
- - spec/ruby-lint/virtual_machine/assignments/assignment_arguments_spec.rb
581
- - spec/ruby-lint/virtual_machine/assignments/constants_spec.rb
582
- - spec/ruby-lint/virtual_machine/assignments/hashes_spec.rb
583
- - spec/ruby-lint/virtual_machine/assignments/optional_spec.rb
584
- - spec/ruby-lint/virtual_machine/assignments/range_spec.rb
585
- - spec/ruby-lint/virtual_machine/assignments/return_values_spec.rb
586
- - spec/ruby-lint/virtual_machine/assignments/variables_spec.rb
587
- - spec/ruby-lint/virtual_machine/associate_nodes_spec.rb
588
- - spec/ruby-lint/virtual_machine/autoloading_spec.rb
589
- - spec/ruby-lint/virtual_machine/blocks_spec.rb
590
- - spec/ruby-lint/virtual_machine/classes/class_methods_spec.rb
591
- - spec/ruby-lint/virtual_machine/classes/extending_spec.rb
592
- - spec/ruby-lint/virtual_machine/classes/redefining_spec.rb
593
- - spec/ruby-lint/virtual_machine/classes/sclass_spec.rb
594
- - spec/ruby-lint/virtual_machine/classes/scoping_spec.rb
595
- - spec/ruby-lint/virtual_machine/complex/rails_spec.rb
596
- - spec/ruby-lint/virtual_machine/complex/rcap_spec.rb
597
- - spec/ruby-lint/virtual_machine/complex/slop_spec.rb
598
- - spec/ruby-lint/virtual_machine/constants_spec.rb
599
- - spec/ruby-lint/virtual_machine/for_spec.rb
600
- - spec/ruby-lint/virtual_machine/freeze_spec.rb
601
- - spec/ruby-lint/virtual_machine/global_variables_spec.rb
602
- - spec/ruby-lint/virtual_machine/inherit_kernel_spec.rb
603
- - spec/ruby-lint/virtual_machine/interpolation_spec.rb
604
- - spec/ruby-lint/virtual_machine/location_spec.rb
605
- - spec/ruby-lint/virtual_machine/method_call_tracking_spec.rb
606
- - spec/ruby-lint/virtual_machine/methods/attr_spec.rb
607
- - spec/ruby-lint/virtual_machine/methods/calls_spec.rb
608
- - spec/ruby-lint/virtual_machine/methods/define_method_spec.rb
609
- - spec/ruby-lint/virtual_machine/methods/defining_spec.rb
610
- - spec/ruby-lint/virtual_machine/methods/docstrings_spec.rb
611
- - spec/ruby-lint/virtual_machine/methods/exporting_spec.rb
612
- - spec/ruby-lint/virtual_machine/methods/kernel_spec.rb
613
- - spec/ruby-lint/virtual_machine/methods/parameters_spec.rb
614
- - spec/ruby-lint/virtual_machine/methods/patching_spec.rb
615
- - spec/ruby-lint/virtual_machine/methods/scoping_spec.rb
616
- - spec/ruby-lint/virtual_machine/methods/square_bracket_spec.rb
617
- - spec/ruby-lint/virtual_machine/methods/visibility_spec.rb
618
- - spec/ruby-lint/virtual_machine/modules_spec.rb
619
- - spec/ruby-lint/virtual_machine/reference_amount_spec.rb
620
- - spec/ruby-lint/virtual_machine/self_spec.rb
621
- - spec/ruby-lint/virtual_machine/unused_spec.rb
622
- - spec/spec_helper.rb
623
- - spec/support/building.rb
624
- - spec/support/coveralls.rb
625
- - spec/support/definitions.rb
626
- - spec/support/fixtures.rb
627
- - spec/support/parsing.rb
628
- - spec/support/simplecov.rb
629
- - spec/support/versions.rb
630
- - task/build.rake
631
- - task/checksum.rake
632
- - task/coverage.rake
633
- - task/doc.rake
634
- - task/generate.rake
635
- - task/graphviz.rake
636
- - task/manifest.rake
637
- - task/tag.rake
638
- - task/test.rake
639
- - task/todo.rake
640
- - task/travis.rake
641
466
  homepage: https://github.com/yorickpeterse/ruby-lint/
642
467
  licenses:
643
468
  - MIT
@@ -658,7 +483,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
658
483
  version: '0'
659
484
  requirements: []
660
485
  rubyforge_project:
661
- rubygems_version: 2.2.0
486
+ rubygems_version: 2.2.2
662
487
  signing_key:
663
488
  specification_version: 4
664
489
  summary: A linter and static code analysis tool for Ruby.