ruby-lint 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- data.tar.gz.asc +14 -14
- data/.gitignore +1 -2
- data/.rubocop.yml +59 -0
- data/.travis.yml +3 -7
- data/.yardopts +2 -2
- data/Gemfile +4 -0
- data/MANIFEST +103 -67
- data/README.md +13 -31
- data/Rakefile +1 -6
- data/checksum/ruby-lint-0.0.3.gem.sha512 +1 -0
- data/debug/memory_usage.rb +14 -0
- data/debug/profile.rb +18 -0
- data/doc/architecture.md +14 -18
- data/doc/changelog.md +29 -0
- data/doc/code_analysis.md +12 -12
- data/doc/configuration.md +21 -50
- data/doc/graphviz/flow.dot +1 -1
- data/doc/images/flow.png +0 -0
- data/lib/ruby-lint.rb +33 -19
- data/lib/ruby-lint/analysis/argument_amount.rb +84 -0
- data/lib/ruby-lint/analysis/base.rb +132 -0
- data/lib/ruby-lint/analysis/confusing_variables.rb +26 -0
- data/lib/ruby-lint/analysis/pedantics.rb +36 -0
- data/lib/ruby-lint/analysis/shadowing_variables.rb +47 -0
- data/lib/ruby-lint/analysis/undefined_methods.rb +91 -0
- data/lib/ruby-lint/analysis/undefined_variables.rb +46 -0
- data/lib/ruby-lint/analysis/unused_variables.rb +49 -0
- data/lib/ruby-lint/ast/builder.rb +17 -0
- data/lib/ruby-lint/ast/node.rb +39 -0
- data/lib/ruby-lint/cli.rb +0 -19
- data/lib/ruby-lint/cli/analyze.rb +54 -28
- data/lib/ruby-lint/cli/ast.rb +21 -6
- data/lib/ruby-lint/cli/base.rb +0 -23
- data/lib/ruby-lint/configuration.rb +112 -42
- data/lib/ruby-lint/constant_loader.rb +10 -28
- data/lib/ruby-lint/default_names.rb +19 -0
- data/lib/ruby-lint/definition/constant_proxy.rb +56 -0
- data/lib/ruby-lint/definition/ruby_method.rb +21 -143
- data/lib/ruby-lint/definition/ruby_object.rb +142 -246
- data/lib/ruby-lint/definition_builder/base.rb +43 -0
- data/lib/ruby-lint/definition_builder/primitive.rb +39 -0
- data/lib/ruby-lint/definition_builder/ruby_array.rb +77 -0
- data/lib/ruby-lint/definition_builder/ruby_block.rb +34 -0
- data/lib/ruby-lint/definition_builder/ruby_class.rb +24 -0
- data/lib/ruby-lint/definition_builder/ruby_hash.rb +37 -0
- data/lib/ruby-lint/definition_builder/ruby_method.rb +84 -0
- data/lib/ruby-lint/definition_builder/ruby_module.rb +68 -0
- data/lib/ruby-lint/definition_generator.rb +41 -15
- data/lib/ruby-lint/definitions/core/arg0.rb +1 -1
- data/lib/ruby-lint/definitions/core/argf.rb +1 -1
- data/lib/ruby-lint/definitions/core/argument_error.rb +2 -2
- data/lib/ruby-lint/definitions/core/argv.rb +1 -1
- data/lib/ruby-lint/definitions/core/array.rb +6 -6
- data/lib/ruby-lint/definitions/core/autoload.rb +2 -2
- data/lib/ruby-lint/definitions/core/basic_object.rb +3 -3
- data/lib/ruby-lint/definitions/core/bignum.rb +2 -2
- data/lib/ruby-lint/definitions/core/binding.rb +2 -2
- data/lib/ruby-lint/definitions/core/class.rb +2 -2
- data/lib/ruby-lint/definitions/core/comparable.rb +1 -1
- data/lib/ruby-lint/definitions/core/complex.rb +4 -4
- data/lib/ruby-lint/definitions/core/condition_variable.rb +2 -2
- data/lib/ruby-lint/definitions/core/continuation.rb +2 -2
- data/lib/ruby-lint/definitions/core/data.rb +2 -2
- data/lib/ruby-lint/definitions/core/date.rb +34 -34
- data/lib/ruby-lint/definitions/core/date_time.rb +26 -26
- data/lib/ruby-lint/definitions/core/default_record_separator.rb +1 -1
- data/lib/ruby-lint/definitions/core/digest.rb +14 -14
- data/lib/ruby-lint/definitions/core/dir.rb +34 -34
- data/lib/ruby-lint/definitions/core/encoding.rb +237 -237
- data/lib/ruby-lint/definitions/core/encoding_error.rb +2 -2
- data/lib/ruby-lint/definitions/core/enumerable.rb +15 -15
- data/lib/ruby-lint/definitions/core/enumerator.rb +2 -2
- data/lib/ruby-lint/definitions/core/env.rb +1 -1
- data/lib/ruby-lint/definitions/core/eoferror.rb +2 -2
- data/lib/ruby-lint/definitions/core/erb.rb +22 -22
- data/lib/ruby-lint/definitions/core/errno.rb +525 -525
- data/lib/ruby-lint/definitions/core/etc.rb +6 -6
- data/lib/ruby-lint/definitions/core/exception.rb +2 -2
- data/lib/ruby-lint/definitions/core/false.rb +1 -1
- data/lib/ruby-lint/definitions/core/false_class.rb +2 -2
- data/lib/ruby-lint/definitions/core/fatal_error.rb +2 -2
- data/lib/ruby-lint/definitions/core/fiber.rb +2 -2
- data/lib/ruby-lint/definitions/core/fiber_error.rb +2 -2
- data/lib/ruby-lint/definitions/core/file.rb +68 -68
- data/lib/ruby-lint/definitions/core/file_list.rb +2 -2
- data/lib/ruby-lint/definitions/core/file_test.rb +1 -1
- data/lib/ruby-lint/definitions/core/file_utils.rb +16 -16
- data/lib/ruby-lint/definitions/core/fixnum.rb +4 -4
- data/lib/ruby-lint/definitions/core/float.rb +16 -16
- data/lib/ruby-lint/definitions/core/float_domain_error.rb +2 -2
- data/lib/ruby-lint/definitions/core/gc.rb +2 -2
- data/lib/ruby-lint/definitions/core/gem.rb +119 -119
- data/lib/ruby-lint/definitions/core/hash.rb +14 -14
- data/lib/ruby-lint/definitions/core/immediate_value.rb +1 -1
- data/lib/ruby-lint/definitions/core/index_error.rb +2 -2
- data/lib/ruby-lint/definitions/core/integer.rb +2 -2
- data/lib/ruby-lint/definitions/core/interrupt.rb +2 -2
- data/lib/ruby-lint/definitions/core/io.rb +38 -38
- data/lib/ruby-lint/definitions/core/ioerror.rb +2 -2
- data/lib/ruby-lint/definitions/core/kernel.rb +3 -3
- data/lib/ruby-lint/definitions/core/key_error.rb +2 -2
- data/lib/ruby-lint/definitions/core/load_error.rb +6 -6
- data/lib/ruby-lint/definitions/core/local_jump_error.rb +2 -2
- data/lib/ruby-lint/definitions/core/main.rb +1 -1
- data/lib/ruby-lint/definitions/core/marshal.rb +35 -35
- data/lib/ruby-lint/definitions/core/match_data.rb +2 -2
- data/lib/ruby-lint/definitions/core/math.rb +7 -7
- data/lib/ruby-lint/definitions/core/memory_segmention_error.rb +2 -2
- data/lib/ruby-lint/definitions/core/method.rb +2 -2
- data/lib/ruby-lint/definitions/core/module.rb +1 -1
- data/lib/ruby-lint/definitions/core/monitor.rb +4 -4
- data/lib/ruby-lint/definitions/core/monitor_mixin.rb +5 -5
- data/lib/ruby-lint/definitions/core/mutex.rb +2 -2
- data/lib/ruby-lint/definitions/core/name_error.rb +2 -2
- data/lib/ruby-lint/definitions/core/nil.rb +1 -1
- data/lib/ruby-lint/definitions/core/nil_class.rb +2 -2
- data/lib/ruby-lint/definitions/core/no_memory_error.rb +2 -2
- data/lib/ruby-lint/definitions/core/no_method_error.rb +2 -2
- data/lib/ruby-lint/definitions/core/not_implemented_error.rb +2 -2
- data/lib/ruby-lint/definitions/core/numeric.rb +2 -2
- data/lib/ruby-lint/definitions/core/object.rb +2 -2
- data/lib/ruby-lint/definitions/core/object_space.rb +1 -1
- data/lib/ruby-lint/definitions/core/open_struct.rb +3 -3
- data/lib/ruby-lint/definitions/core/option_parser.rb +83 -83
- data/lib/ruby-lint/definitions/core/precision.rb +1 -1
- data/lib/ruby-lint/definitions/core/primitive_failure.rb +2 -2
- data/lib/ruby-lint/definitions/core/proc.rb +2 -2
- data/lib/ruby-lint/definitions/core/process.rb +29 -29
- data/lib/ruby-lint/definitions/core/psych.rb +149 -149
- data/lib/ruby-lint/definitions/core/queue.rb +2 -2
- data/lib/ruby-lint/definitions/core/rake.rb +117 -117
- data/lib/ruby-lint/definitions/core/rake_file_utils.rb +1 -1
- data/lib/ruby-lint/definitions/core/rakeversion.rb +1 -1
- data/lib/ruby-lint/definitions/core/random.rb +2 -2
- data/lib/ruby-lint/definitions/core/range.rb +4 -4
- data/lib/ruby-lint/definitions/core/range_error.rb +2 -2
- data/lib/ruby-lint/definitions/core/rational.rb +2 -2
- data/lib/ruby-lint/definitions/core/rb_config.rb +3 -3
- data/lib/ruby-lint/definitions/core/regexp.rb +28 -28
- data/lib/ruby-lint/definitions/core/regexp_error.rb +2 -2
- data/lib/ruby-lint/definitions/core/rubinius.rb +1057 -1057
- data/lib/ruby-lint/definitions/core/ruby_copyright.rb +1 -1
- data/lib/ruby-lint/definitions/core/ruby_description.rb +1 -1
- data/lib/ruby-lint/definitions/core/ruby_engine.rb +1 -1
- data/lib/ruby-lint/definitions/core/ruby_lint.rb +9 -9
- data/lib/ruby-lint/definitions/core/ruby_patchlevel.rb +1 -1
- data/lib/ruby-lint/definitions/core/ruby_platform.rb +1 -1
- data/lib/ruby-lint/definitions/core/ruby_release_date.rb +1 -1
- data/lib/ruby-lint/definitions/core/ruby_version.rb +1 -1
- data/lib/ruby-lint/definitions/core/runtime_error.rb +2 -2
- data/lib/ruby-lint/definitions/core/scan_error.rb +2 -2
- data/lib/ruby-lint/definitions/core/script_error.rb +2 -2
- data/lib/ruby-lint/definitions/core/security_error.rb +2 -2
- data/lib/ruby-lint/definitions/core/shellwords.rb +1 -1
- data/lib/ruby-lint/definitions/core/signal.rb +3 -3
- data/lib/ruby-lint/definitions/core/signal_exception.rb +2 -2
- data/lib/ruby-lint/definitions/core/singleton.rb +2 -2
- data/lib/ruby-lint/definitions/core/sized_queue.rb +2 -2
- data/lib/ruby-lint/definitions/core/standard_error.rb +2 -2
- data/lib/ruby-lint/definitions/core/stderr.rb +1 -1
- data/lib/ruby-lint/definitions/core/stdin.rb +1 -1
- data/lib/ruby-lint/definitions/core/stdout.rb +1 -1
- data/lib/ruby-lint/definitions/core/stop_iteration.rb +2 -2
- data/lib/ruby-lint/definitions/core/string.rb +21 -21
- data/lib/ruby-lint/definitions/core/string_io.rb +7 -7
- data/lib/ruby-lint/definitions/core/string_scanner.rb +4 -4
- data/lib/ruby-lint/definitions/core/struct.rb +20 -20
- data/lib/ruby-lint/definitions/core/syck.rb +4 -4
- data/lib/ruby-lint/definitions/core/symbol.rb +2 -2
- data/lib/ruby-lint/definitions/core/syntax_error.rb +2 -2
- data/lib/ruby-lint/definitions/core/system_call_error.rb +2 -2
- data/lib/ruby-lint/definitions/core/system_exit.rb +2 -2
- data/lib/ruby-lint/definitions/core/system_stack_error.rb +2 -2
- data/lib/ruby-lint/definitions/core/thread.rb +6 -6
- data/lib/ruby-lint/definitions/core/thread_error.rb +2 -2
- data/lib/ruby-lint/definitions/core/thread_group.rb +2 -2
- data/lib/ruby-lint/definitions/core/time.rb +3 -3
- data/lib/ruby-lint/definitions/core/toplevel_binding.rb +1 -1
- data/lib/ruby-lint/definitions/core/true.rb +1 -1
- data/lib/ruby-lint/definitions/core/true_class.rb +2 -2
- data/lib/ruby-lint/definitions/core/type_error.rb +2 -2
- data/lib/ruby-lint/definitions/core/unbound_method.rb +2 -2
- data/lib/ruby-lint/definitions/core/unmarshalable.rb +1 -1
- data/lib/ruby-lint/definitions/core/unsupported_library_error.rb +2 -2
- data/lib/ruby-lint/definitions/core/weak_ref.rb +4 -4
- data/lib/ruby-lint/definitions/core/zero_division_error.rb +2 -2
- data/lib/ruby-lint/definitions/rails.rb +12 -0
- data/lib/ruby-lint/definitions/rails/abstract_controller.rb +335 -0
- data/lib/ruby-lint/definitions/rails/action_controller.rb +1244 -0
- data/lib/ruby-lint/definitions/rails/action_dispatch.rb +741 -0
- data/lib/ruby-lint/definitions/rails/action_mailer.rb +502 -0
- data/lib/ruby-lint/definitions/rails/action_pack.rb +16 -0
- data/lib/ruby-lint/definitions/rails/action_view.rb +898 -0
- data/lib/ruby-lint/definitions/rails/active_model.rb +437 -0
- data/lib/ruby-lint/definitions/rails/active_record.rb +2901 -0
- data/lib/ruby-lint/definitions/rails/active_support.rb +1963 -0
- data/lib/ruby-lint/definitions/rails/arel.rb +665 -0
- data/lib/ruby-lint/definitions/rails/rails.rb +452 -0
- data/lib/ruby-lint/definitions/rails/sprockets.rb +968 -0
- data/lib/ruby-lint/generated_constant.rb +33 -0
- data/lib/ruby-lint/helper/constant_paths.rb +30 -21
- data/lib/ruby-lint/inspector.rb +20 -2
- data/lib/ruby-lint/iterator.rb +11 -171
- data/lib/ruby-lint/nested_stack.rb +46 -0
- data/lib/ruby-lint/parser.rb +24 -806
- data/lib/ruby-lint/report.rb +2 -30
- data/lib/ruby-lint/report/entry.rb +2 -2
- data/lib/ruby-lint/runner.rb +81 -0
- data/lib/ruby-lint/template/definition.erb +12 -8
- data/lib/ruby-lint/variable_predicates.rb +16 -58
- data/lib/ruby-lint/version.rb +1 -1
- data/lib/ruby-lint/virtual_machine.rb +1044 -0
- data/ruby-lint.gemspec +17 -7
- data/spec/fixtures/complex/rails/basic_controller.rb +9 -0
- data/spec/fixtures/complex/rcap.rb +38 -0
- data/spec/fixtures/complex/slop.rb +680 -0
- data/spec/fixtures/config.yml +8 -0
- data/spec/fixtures/invalid.rb +3 -0
- data/spec/fixtures/invalid_2.rb +3 -0
- data/spec/fixtures/syntax_error.rb +1 -0
- data/spec/fixtures/valid.rb +3 -0
- data/spec/helper.rb +6 -0
- data/spec/ruby-lint/{analyze → analysis}/argument_amount.rb +7 -7
- data/spec/ruby-lint/analysis/confusing_variables.rb +46 -0
- data/spec/ruby-lint/analysis/pedantics.rb +43 -0
- data/spec/ruby-lint/{analyze → analysis}/shadowing_variables.rb +5 -5
- data/spec/ruby-lint/{analyze → analysis}/undefined_methods.rb +18 -18
- data/spec/ruby-lint/{analyze → analysis}/undefined_variables.rb +19 -25
- data/spec/ruby-lint/{analyze → analysis}/unused_variables.rb +29 -16
- data/spec/ruby-lint/ast/node.rb +33 -0
- data/spec/ruby-lint/cli/analyze.rb +31 -0
- data/spec/ruby-lint/cli/ast.rb +23 -0
- data/spec/ruby-lint/configuration.rb +45 -6
- data/spec/ruby-lint/definition/constant_proxy.rb +31 -0
- data/spec/ruby-lint/definition/dsl.rb +13 -20
- data/spec/ruby-lint/definition/ruby_method.rb +65 -148
- data/spec/ruby-lint/definition/ruby_object.rb +60 -96
- data/spec/ruby-lint/definition_builder/primitive.rb +62 -0
- data/spec/ruby-lint/definition_builder/ruby_class.rb +108 -0
- data/spec/ruby-lint/definition_builder/ruby_method.rb +53 -0
- data/spec/ruby-lint/definition_builder/ruby_module.rb +50 -0
- data/spec/ruby-lint/iterator.rb +40 -16
- data/spec/ruby-lint/nested_stack.rb +23 -0
- data/spec/ruby-lint/parser.rb +14 -0
- data/spec/ruby-lint/report.rb +0 -10
- data/spec/ruby-lint/report/entry.rb +8 -4
- data/spec/ruby-lint/runner.rb +32 -0
- data/spec/ruby-lint/virtual_machine/assignments/arrays.rb +87 -0
- data/spec/ruby-lint/virtual_machine/assignments/hashes.rb +52 -0
- data/spec/ruby-lint/virtual_machine/assignments/optional.rb +41 -0
- data/spec/ruby-lint/{definitions_builder → virtual_machine}/assignments/return_values.rb +11 -11
- data/spec/ruby-lint/virtual_machine/assignments/variables.rb +85 -0
- data/spec/ruby-lint/virtual_machine/associate_nodes.rb +17 -0
- data/spec/ruby-lint/virtual_machine/autoloading.rb +31 -0
- data/spec/ruby-lint/virtual_machine/blocks.rb +64 -0
- data/spec/ruby-lint/virtual_machine/classes/class_methods.rb +21 -0
- data/spec/ruby-lint/virtual_machine/classes/extending.rb +104 -0
- data/spec/ruby-lint/virtual_machine/classes/redefining.rb +24 -0
- data/spec/ruby-lint/virtual_machine/classes/sclass.rb +94 -0
- data/spec/ruby-lint/virtual_machine/classes/scoping.rb +60 -0
- data/spec/ruby-lint/virtual_machine/complex/rails.rb +18 -0
- data/spec/ruby-lint/virtual_machine/complex/rcap.rb +15 -0
- data/spec/ruby-lint/virtual_machine/complex/slop.rb +16 -0
- data/spec/ruby-lint/{definitions_builder → virtual_machine}/for.rb +2 -2
- data/spec/ruby-lint/virtual_machine/freeze.rb +13 -0
- data/spec/ruby-lint/virtual_machine/interpolation.rb +12 -0
- data/spec/ruby-lint/virtual_machine/methods/defining.rb +40 -0
- data/spec/ruby-lint/virtual_machine/methods/exporting.rb +19 -0
- data/spec/ruby-lint/virtual_machine/methods/parameters.rb +77 -0
- data/spec/ruby-lint/virtual_machine/methods/patching.rb +26 -0
- data/spec/ruby-lint/virtual_machine/methods/scoping.rb +63 -0
- data/spec/ruby-lint/virtual_machine/methods/visibility.rb +64 -0
- data/spec/ruby-lint/{definitions_builder → virtual_machine}/modules.rb +16 -16
- data/spec/ruby-lint/virtual_machine/reference_amount.rb +33 -0
- data/spec/ruby-lint/virtual_machine/unused.rb +17 -0
- data/spec/support/bacon.rb +13 -13
- data/spec/support/building.rb +23 -16
- data/spec/support/coveralls.rb +5 -0
- data/spec/support/fixtures.rb +20 -0
- data/spec/support/parsing.rb +3 -5
- data/spec/support/simplecov.rb +5 -3
- data/task/build.rake +1 -1
- data/task/cop.rake +11 -0
- data/task/generate.rake +40 -2
- data/task/profile.rake +27 -0
- data/task/todo.rake +6 -0
- data/task/travis.rake +7 -0
- metadata +160 -75
- metadata.gz.asc +14 -14
- data/doc/build/.gitkeep +0 -0
- data/lib/ruby-lint/analyze/argument_amount.rb +0 -73
- data/lib/ruby-lint/analyze/shadowing_variables.rb +0 -32
- data/lib/ruby-lint/analyze/undefined_methods.rb +0 -68
- data/lib/ruby-lint/analyze/undefined_variables.rb +0 -72
- data/lib/ruby-lint/analyze/unused_variables.rb +0 -48
- data/lib/ruby-lint/base.rb +0 -85
- data/lib/ruby-lint/definitions_builder.rb +0 -692
- data/lib/ruby-lint/helper/conversion.rb +0 -33
- data/lib/ruby-lint/helper/current_scope.rb +0 -98
- data/lib/ruby-lint/helper/methods.rb +0 -91
- data/lib/ruby-lint/node.rb +0 -107
- data/lib/ruby-lint/parser_error.rb +0 -30
- data/spec/ruby-lint/constant_loader.rb +0 -32
- data/spec/ruby-lint/definition/method_calls.rb +0 -26
- data/spec/ruby-lint/definitions_builder/assignments/arrays.rb +0 -71
- data/spec/ruby-lint/definitions_builder/assignments/hashes.rb +0 -65
- data/spec/ruby-lint/definitions_builder/assignments/objects.rb +0 -23
- data/spec/ruby-lint/definitions_builder/assignments/optional.rb +0 -22
- data/spec/ruby-lint/definitions_builder/assignments/variables.rb +0 -71
- data/spec/ruby-lint/definitions_builder/associate_nodes.rb +0 -17
- data/spec/ruby-lint/definitions_builder/blocks.rb +0 -40
- data/spec/ruby-lint/definitions_builder/classes.rb +0 -230
- data/spec/ruby-lint/definitions_builder/methods.rb +0 -147
- data/spec/ruby-lint/definitions_builder/reference_amount.rb +0 -31
- data/spec/ruby-lint/definitions_builder/unused.rb +0 -15
- data/spec/ruby-lint/node.rb +0 -38
- data/spec/ruby-lint/parser/assignments.rb +0 -225
- data/spec/ruby-lint/parser/classes.rb +0 -110
- data/spec/ruby-lint/parser/errors.rb +0 -12
- data/spec/ruby-lint/parser/metadata.rb +0 -17
- data/spec/ruby-lint/parser/method_definitions.rb +0 -111
- data/spec/ruby-lint/parser/methods.rb +0 -217
- data/spec/ruby-lint/parser/modules.rb +0 -70
- data/spec/ruby-lint/parser/operators.rb +0 -40
- data/spec/ruby-lint/parser/statements/begin.rb +0 -55
- data/spec/ruby-lint/parser/statements/case.rb +0 -34
- data/spec/ruby-lint/parser/statements/defined.rb +0 -11
- data/spec/ruby-lint/parser/statements/for.rb +0 -34
- data/spec/ruby-lint/parser/statements/if.rb +0 -46
- data/spec/ruby-lint/parser/statements/return.rb +0 -14
- data/spec/ruby-lint/parser/statements/super.rb +0 -49
- data/spec/ruby-lint/parser/statements/unless.rb +0 -42
- data/spec/ruby-lint/parser/statements/until.rb +0 -25
- data/spec/ruby-lint/parser/statements/while.rb +0 -25
- data/spec/ruby-lint/parser/statements/yield.rb +0 -18
- data/spec/ruby-lint/parser/types/arrays.rb +0 -47
- data/spec/ruby-lint/parser/types/booleans.rb +0 -11
- data/spec/ruby-lint/parser/types/constants.rb +0 -32
- data/spec/ruby-lint/parser/types/hashes.rb +0 -55
- data/spec/ruby-lint/parser/types/nil.rb +0 -7
- data/spec/ruby-lint/parser/types/numbers.rb +0 -11
- data/spec/ruby-lint/parser/types/procs.rb +0 -11
- data/spec/ruby-lint/parser/types/ranges.rb +0 -11
- data/spec/ruby-lint/parser/types/regexp.rb +0 -27
- data/spec/ruby-lint/parser/types/strings.rb +0 -44
- data/spec/ruby-lint/parser/types/symbols.rb +0 -15
- data/task/stdlib.rake +0 -23
@@ -4,11 +4,11 @@ describe 'Building module definitions' do
|
|
4
4
|
describe 'scoping definitions' do
|
5
5
|
should 'process a global module' do
|
6
6
|
defs = build_definitions('module Example; end')
|
7
|
-
example = defs.lookup(:
|
7
|
+
example = defs.lookup(:const, 'Example')
|
8
8
|
|
9
9
|
example.is_a?(ruby_object).should == true
|
10
10
|
|
11
|
-
example.type.should == :
|
11
|
+
example.type.should == :const
|
12
12
|
example.name.should == 'Example'
|
13
13
|
end
|
14
14
|
|
@@ -21,13 +21,13 @@ end
|
|
21
21
|
CODE
|
22
22
|
|
23
23
|
defs = build_definitions(code)
|
24
|
-
first = defs.lookup(:
|
24
|
+
first = defs.lookup(:const, 'First')
|
25
25
|
|
26
26
|
first.is_a?(ruby_object).should == true
|
27
27
|
|
28
|
-
defs.lookup(:
|
28
|
+
defs.lookup(:const, 'Second').nil?.should == true
|
29
29
|
|
30
|
-
first.lookup(:
|
30
|
+
first.lookup(:const, 'Second') \
|
31
31
|
.is_a?(ruby_object) \
|
32
32
|
.should == true
|
33
33
|
end
|
@@ -44,24 +44,24 @@ end
|
|
44
44
|
CODE
|
45
45
|
|
46
46
|
defs = build_definitions(code)
|
47
|
-
first = defs.lookup(:
|
47
|
+
first = defs.lookup(:const, 'First')
|
48
48
|
|
49
|
-
first.lookup(:
|
49
|
+
first.lookup(:const, 'Second') \
|
50
50
|
.is_a?(ruby_object) \
|
51
51
|
.should == true
|
52
52
|
|
53
53
|
# Due to "First" and "Third" being defined in the same scope the "Third"
|
54
54
|
# constant is available inside the "First" module.
|
55
|
-
first.lookup(:
|
55
|
+
first.lookup(:const, 'Third') \
|
56
56
|
.is_a?(ruby_object) \
|
57
57
|
.should == true
|
58
58
|
|
59
|
-
first.lookup(:
|
60
|
-
.lookup(:
|
59
|
+
first.lookup(:const, 'Second') \
|
60
|
+
.lookup(:const, 'Third') \
|
61
61
|
.is_a?(ruby_object) \
|
62
62
|
.should == true
|
63
63
|
|
64
|
-
defs.lookup(:
|
64
|
+
defs.lookup(:const, 'Third') \
|
65
65
|
.is_a?(ruby_object) \
|
66
66
|
.should == true
|
67
67
|
end
|
@@ -81,7 +81,7 @@ end
|
|
81
81
|
|
82
82
|
defs = build_definitions(code)
|
83
83
|
|
84
|
-
defs.lookup(:
|
84
|
+
defs.lookup(:const, 'First') \
|
85
85
|
.lookup(:instance_method, 'example') \
|
86
86
|
.is_a?(ruby_method) \
|
87
87
|
.should == true
|
@@ -103,7 +103,7 @@ end
|
|
103
103
|
|
104
104
|
defs = build_definitions(code)
|
105
105
|
|
106
|
-
defs.lookup(:
|
106
|
+
defs.lookup(:const, 'Second') \
|
107
107
|
.lookup(:instance_method, 'example') \
|
108
108
|
.is_a?(ruby_method) \
|
109
109
|
.should == true
|
@@ -123,7 +123,7 @@ end
|
|
123
123
|
|
124
124
|
defs = build_definitions(code)
|
125
125
|
|
126
|
-
defs.lookup(:
|
126
|
+
defs.lookup(:const, 'Second') \
|
127
127
|
.lookup(:method, 'example') \
|
128
128
|
.is_a?(ruby_method) \
|
129
129
|
.should == true
|
@@ -145,7 +145,7 @@ end
|
|
145
145
|
|
146
146
|
defs = build_definitions(code)
|
147
147
|
|
148
|
-
defs.lookup(:
|
148
|
+
defs.lookup(:const, 'Third') \
|
149
149
|
.lookup(:instance_method, 'example') \
|
150
150
|
.is_a?(ruby_method) \
|
151
151
|
.should == true
|
@@ -166,7 +166,7 @@ end
|
|
166
166
|
|
167
167
|
defs = build_definitions(code)
|
168
168
|
|
169
|
-
defs.lookup(:
|
169
|
+
defs.lookup(:const, 'Second') \
|
170
170
|
.lookup(:instance_method, 'example') \
|
171
171
|
.is_a?(ruby_method) \
|
172
172
|
.should == true
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require File.expand_path('../../../helper', __FILE__)
|
2
|
+
|
3
|
+
describe RubyLint::VirtualMachine do
|
4
|
+
describe 'reference counting' do
|
5
|
+
should 'count the amount of references for a variable' do
|
6
|
+
code = <<-CODE
|
7
|
+
number = 10
|
8
|
+
number
|
9
|
+
number
|
10
|
+
CODE
|
11
|
+
|
12
|
+
defs = build_definitions(code)
|
13
|
+
|
14
|
+
defs.lookup(:lvar, 'number').reference_amount.should == 2
|
15
|
+
end
|
16
|
+
|
17
|
+
should 'count the amount of references for a constant path' do
|
18
|
+
code = <<-CODE
|
19
|
+
module A; end
|
20
|
+
A::B = 10
|
21
|
+
A::B
|
22
|
+
A::B
|
23
|
+
CODE
|
24
|
+
|
25
|
+
defs = build_definitions(code)
|
26
|
+
|
27
|
+
defs.lookup(:const, 'A') \
|
28
|
+
.lookup(:const, 'B') \
|
29
|
+
.reference_amount \
|
30
|
+
.should == 2
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require File.expand_path('../../../helper', __FILE__)
|
2
|
+
|
3
|
+
describe RubyLint::VirtualMachine do
|
4
|
+
describe 'marking variables as used/unused' do
|
5
|
+
should 'mark variables as unused by default' do
|
6
|
+
defs = build_definitions('number = 10')
|
7
|
+
|
8
|
+
defs.lookup(:lvar, 'number').used?.should == false
|
9
|
+
end
|
10
|
+
|
11
|
+
should 'mark variables as used' do
|
12
|
+
defs = build_definitions('number = 10; number')
|
13
|
+
|
14
|
+
defs.lookup(:lvar, 'number').used?.should == true
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
data/spec/support/bacon.rb
CHANGED
@@ -15,19 +15,19 @@ end
|
|
15
15
|
|
16
16
|
# Show performance related information after running the tests.
|
17
17
|
module Bacon
|
18
|
-
|
19
|
-
|
20
|
-
end
|
18
|
+
module ColoredOutput
|
19
|
+
alias_method :old_handle_summary, :handle_summary
|
21
20
|
|
22
|
-
|
23
|
-
|
21
|
+
def handle_summary
|
22
|
+
old_handle_summary
|
24
23
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
24
|
+
memory = `ps -o rss= #{Process.pid}`.strip.to_f
|
25
|
+
memory_mb = (memory / 1024)
|
26
|
+
time_secs = (Time.now - @timer)
|
27
|
+
time_ms = time_secs * 1000
|
29
28
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
end
|
29
|
+
puts '%i KB (%.2f MB) used in %.2f miliseconds (%.2f seconds)' \
|
30
|
+
% [memory, memory_mb, time_ms, time_secs]
|
31
|
+
end
|
32
|
+
end # TestUnitOutput
|
33
|
+
end # Bacon
|
data/spec/support/building.rb
CHANGED
@@ -5,14 +5,12 @@
|
|
5
5
|
# @return [RubyLint::Definition::RubyObject]
|
6
6
|
#
|
7
7
|
def build_definitions(code)
|
8
|
-
|
9
|
-
|
10
|
-
ast = parse(code, false)
|
8
|
+
ast = parse(code, false)
|
9
|
+
vm = RubyLint::VirtualMachine.new
|
11
10
|
|
12
|
-
|
13
|
-
iterator.iterate(ast)
|
11
|
+
vm.run(ast)
|
14
12
|
|
15
|
-
return
|
13
|
+
return vm.definitions
|
16
14
|
end
|
17
15
|
|
18
16
|
##
|
@@ -23,21 +21,30 @@ end
|
|
23
21
|
# @return [RubyLint::Report]
|
24
22
|
#
|
25
23
|
def build_report(code, iterator)
|
26
|
-
ast
|
27
|
-
|
28
|
-
loader = RubyLint::ConstantLoader.new
|
24
|
+
ast = parse(code, false)
|
25
|
+
vm = RubyLint::VirtualMachine.new
|
29
26
|
|
30
|
-
|
31
|
-
defs_builder.iterate(ast)
|
27
|
+
vm.run(ast)
|
32
28
|
|
33
29
|
report = RubyLint::Report.new
|
34
|
-
iterator = iterator.new(
|
35
|
-
:report => report,
|
36
|
-
:definitions => defs_builder.options[:definitions],
|
37
|
-
:node_definitions => defs_builder.options[:node_definitions]
|
38
|
-
)
|
30
|
+
iterator = iterator.new(:report => report, :vm => vm)
|
39
31
|
|
40
32
|
iterator.iterate(ast)
|
41
33
|
|
42
34
|
return report
|
43
35
|
end
|
36
|
+
|
37
|
+
##
|
38
|
+
# Processes the given AST and returns the node associations.
|
39
|
+
#
|
40
|
+
# @see build_definitions
|
41
|
+
# @return [Hash]
|
42
|
+
#
|
43
|
+
def build_associations(code)
|
44
|
+
ast = parse(code, false)
|
45
|
+
vm = RubyLint::VirtualMachine.new
|
46
|
+
|
47
|
+
vm.run(ast)
|
48
|
+
|
49
|
+
return vm.associations
|
50
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
##
|
2
|
+
# Returns the source code of a fixture file.
|
3
|
+
#
|
4
|
+
# @param [String] path The path to the fixture file, relative to the fixture
|
5
|
+
# directory
|
6
|
+
# @return [String]
|
7
|
+
#
|
8
|
+
def fixture(path)
|
9
|
+
return File.read(fixture_path(path))
|
10
|
+
end
|
11
|
+
|
12
|
+
##
|
13
|
+
# Returns the path to the given fixture file.
|
14
|
+
#
|
15
|
+
# @param [String] path The path relative to the fixtures directory.
|
16
|
+
# @return [String]
|
17
|
+
#
|
18
|
+
def fixture_path(path)
|
19
|
+
return File.join(File.expand_path('../../fixtures', __FILE__), path)
|
20
|
+
end
|
data/spec/support/parsing.rb
CHANGED
@@ -8,16 +8,14 @@
|
|
8
8
|
# @return [RubyLint::Node]
|
9
9
|
#
|
10
10
|
def parse(code, first = true)
|
11
|
-
ast = RubyLint::Parser.new(code)
|
11
|
+
ast = RubyLint::Parser.new.parse(code)
|
12
12
|
|
13
13
|
return first ? ast.children[0] : ast
|
14
14
|
end
|
15
15
|
|
16
16
|
##
|
17
|
-
# Shorthand for creating instances of
|
18
|
-
#
|
19
|
-
# @see RubyLint::Node#initialize
|
17
|
+
# Shorthand for creating instances of a AST node.
|
20
18
|
#
|
21
19
|
def s(type, *children)
|
22
|
-
return RubyLint::Node.new(type, children)
|
20
|
+
return RubyLint::AST::Node.new(type, children)
|
23
21
|
end
|
data/spec/support/simplecov.rb
CHANGED
@@ -5,12 +5,14 @@ SimpleCov.configure do
|
|
5
5
|
command_name 'bacon'
|
6
6
|
project_name 'ruby-lint'
|
7
7
|
|
8
|
-
add_group 'Analysis'
|
9
|
-
add_group '
|
10
|
-
add_group '
|
8
|
+
add_group 'Analysis', 'ruby-lint/analysis'
|
9
|
+
add_group 'Definition Containers', 'ruby-lint/definition'
|
10
|
+
add_group 'Definition Builders', 'ruby-lint/definition_builder'
|
11
|
+
add_group 'Presenters', 'ruby-lint/presenter'
|
11
12
|
|
12
13
|
add_filter 'spec'
|
13
14
|
add_filter 'lib/ruby-lint/version'
|
15
|
+
add_filter 'lib/ruby-lint/definitions'
|
14
16
|
end
|
15
17
|
|
16
18
|
SimpleCov.start
|
data/task/build.rake
CHANGED
data/task/cop.rake
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
desc 'Runs rubocop on lib/'
|
2
|
+
task :cop do
|
3
|
+
if `which rubocop 2>&1` =~ /no rubocop in/
|
4
|
+
abort <<-EOF.strip
|
5
|
+
Rubocop is not installed, install it by running `gem insatll rubocop`.
|
6
|
+
Make sure that you install version 0.9.0 or newer.
|
7
|
+
EOF
|
8
|
+
end
|
9
|
+
|
10
|
+
sh 'rubocop lib/'
|
11
|
+
end
|
data/task/generate.rake
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
namespace :generate do
|
2
2
|
desc 'Generates a set of definitions for a constant'
|
3
|
-
task :definitions, :constant, :directory do |task, args|
|
3
|
+
task :definitions, :constant, :directory, :overwrite do |task, args|
|
4
4
|
abort 'You have to specify a constant' unless args[:constant]
|
5
5
|
abort 'You have to specify a directory' unless args[:directory]
|
6
6
|
|
7
7
|
generator = RubyLint::DefinitionGenerator.new(
|
8
8
|
args[:constant],
|
9
9
|
args[:directory],
|
10
|
-
:overwrite =>
|
10
|
+
:overwrite => !!args[:overwrite]
|
11
11
|
)
|
12
12
|
|
13
13
|
generator.generate
|
@@ -31,4 +31,42 @@ namespace :generate do
|
|
31
31
|
|
32
32
|
generator.generate
|
33
33
|
end
|
34
|
+
|
35
|
+
desc 'Generates definitions for Rails'
|
36
|
+
task :rails do
|
37
|
+
require 'mail'
|
38
|
+
require 'rails/all'
|
39
|
+
|
40
|
+
dir = File.expand_path('../../lib/ruby-lint/definitions/rails', __FILE__)
|
41
|
+
|
42
|
+
constants = [
|
43
|
+
'AbstractController',
|
44
|
+
'ActionController',
|
45
|
+
'ActionDispatch',
|
46
|
+
'ActionMailer',
|
47
|
+
'ActionPack',
|
48
|
+
'ActionView',
|
49
|
+
'ActiveModel',
|
50
|
+
'ActiveRecord',
|
51
|
+
'ActiveSupport',
|
52
|
+
'Arel',
|
53
|
+
'Rails',
|
54
|
+
'Sprockets',
|
55
|
+
]
|
56
|
+
|
57
|
+
constants.each do |name|
|
58
|
+
constant = Object.const_get(name)
|
59
|
+
|
60
|
+
# Deal with Rails' autoloading nonsense.
|
61
|
+
if constant.respond_to?(:eager_load!)
|
62
|
+
constant.eager_load!
|
63
|
+
end
|
64
|
+
|
65
|
+
Rake::Task['generate:definitions'].execute(
|
66
|
+
:constant => name,
|
67
|
+
:directory => dir,
|
68
|
+
:overwrite => true
|
69
|
+
)
|
70
|
+
end
|
71
|
+
end
|
34
72
|
end
|
data/task/profile.rake
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
namespace :profile do
|
2
|
+
desc 'Runs debug/profile.rb'
|
3
|
+
task :profile do
|
4
|
+
sh 'ruby debug/profile.rb 2>&1 | less -R -S'
|
5
|
+
end
|
6
|
+
|
7
|
+
desc 'Profiles memory usage'
|
8
|
+
task :memory do
|
9
|
+
ENV['RUBY_PROF_MEASURE_MODE'] = 'memory'
|
10
|
+
|
11
|
+
Rake::Task['profile:profile'].invoke
|
12
|
+
end
|
13
|
+
|
14
|
+
desc 'Profiles object allocations'
|
15
|
+
task :allocations do
|
16
|
+
ENV['RUBY_PROF_MEASURE_MODE'] = 'allocations'
|
17
|
+
|
18
|
+
Rake::Task['profile:profile'].invoke
|
19
|
+
end
|
20
|
+
|
21
|
+
desc 'Profiles process time'
|
22
|
+
task :process do
|
23
|
+
ENV['RUBY_PROF_MEASURE_MODE'] = 'process'
|
24
|
+
|
25
|
+
Rake::Task['profile:profile'].invoke
|
26
|
+
end
|
27
|
+
end
|
data/task/todo.rake
ADDED