ruby-lint 1.0.3 → 1.1.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.
- checksums.yaml +4 -4
- data/.ruby-version +1 -1
- data/.travis.yml +2 -5
- data/Gemfile +9 -4
- data/MANIFEST +32 -28
- data/README.md +18 -5
- data/Rakefile +7 -3
- data/checksum/ruby-lint-1.0.2.gem.sha512 +1 -0
- data/checksum/ruby-lint-1.0.3.gem.sha512 +1 -0
- data/doc/changelog.md +40 -0
- data/doc/definitions.md +182 -0
- data/gen/rails/constants.txt +12 -0
- data/gen/rails/requires.rb +2 -0
- data/gen/stdlib/constants.rb +30 -0
- data/gen/stdlib/constants.txt +214 -0
- data/gen/stdlib/requires.rb +64 -0
- data/lib/ruby-lint.rb +7 -14
- data/lib/ruby-lint/analysis/undefined_methods.rb +8 -1
- data/lib/ruby-lint/analysis/useless_equality_checks.rb +92 -0
- data/lib/ruby-lint/cli.rb +1 -2
- data/lib/ruby-lint/cli/analyze.rb +55 -26
- data/lib/ruby-lint/cli/cache.rb +60 -0
- data/lib/ruby-lint/configuration.rb +10 -4
- data/lib/ruby-lint/constant_loader.rb +75 -22
- data/lib/ruby-lint/definition/constant_proxy.rb +51 -3
- data/lib/ruby-lint/definition/registry.rb +126 -0
- data/lib/ruby-lint/definition/ruby_method.rb +0 -11
- data/lib/ruby-lint/definition/ruby_object.rb +32 -24
- data/lib/ruby-lint/definition_builder/base.rb +9 -12
- data/lib/ruby-lint/definition_builder/primitive.rb +1 -1
- data/lib/ruby-lint/definition_builder/ruby_array.rb +1 -1
- data/lib/ruby-lint/definition_builder/ruby_block.rb +3 -3
- data/lib/ruby-lint/definition_builder/ruby_class.rb +2 -2
- data/lib/ruby-lint/definition_builder/ruby_hash.rb +1 -1
- data/lib/ruby-lint/definition_builder/ruby_method.rb +1 -1
- data/lib/ruby-lint/definition_builder/ruby_module.rb +4 -4
- data/lib/ruby-lint/definition_generator.rb +12 -2
- data/lib/ruby-lint/definitions/core/abbrev.rb +8 -11
- data/lib/ruby-lint/definitions/core/argf.rb +9 -7
- data/lib/ruby-lint/definitions/core/argument_error.rb +8 -10
- data/lib/ruby-lint/definitions/core/argv.rb +9 -9
- data/lib/ruby-lint/definitions/core/array.rb +296 -534
- data/lib/ruby-lint/definitions/core/base64.rb +22 -25
- data/lib/ruby-lint/definitions/core/basic_object.rb +30 -30
- data/lib/ruby-lint/definitions/core/basic_socket.rb +341 -455
- data/lib/ruby-lint/definitions/core/benchmark.rb +157 -24
- data/lib/ruby-lint/definitions/core/bignum.rb +110 -95
- data/lib/ruby-lint/definitions/core/binding.rb +38 -35
- data/lib/ruby-lint/definitions/core/cgi.rb +333 -49
- data/lib/ruby-lint/definitions/core/class.rb +16 -16
- data/lib/ruby-lint/definitions/core/common_headers.rb +4 -548
- data/lib/ruby-lint/definitions/core/common_libs.rb +4 -421
- data/lib/ruby-lint/definitions/core/comparable.rb +28 -29
- data/lib/ruby-lint/definitions/core/complex.rb +103 -141
- data/lib/ruby-lint/definitions/core/condition_variable.rb +14 -14
- data/lib/ruby-lint/definitions/core/config.rb +4 -318
- data/lib/ruby-lint/definitions/core/conftest_c.rb +4 -548
- data/lib/ruby-lint/definitions/core/coutflag.rb +4 -548
- data/lib/ruby-lint/definitions/core/csv.rb +729 -329
- data/lib/ruby-lint/definitions/core/data.rb +9 -8
- data/lib/ruby-lint/definitions/core/date.rb +452 -526
- data/lib/ruby-lint/definitions/core/date_time.rb +234 -303
- data/lib/ruby-lint/definitions/core/delegator.rb +57 -48
- data/lib/ruby-lint/definitions/core/digest.rb +94 -115
- data/lib/ruby-lint/definitions/core/dir.rb +89 -459
- data/lib/ruby-lint/definitions/core/drb.rb +531 -36
- data/lib/ruby-lint/definitions/core/drb_id_conv.rb +10 -19
- data/lib/ruby-lint/definitions/core/drb_object.rb +53 -58
- data/lib/ruby-lint/definitions/core/drb_undumped.rb +7 -10
- data/lib/ruby-lint/definitions/core/encoding.rb +1026 -1718
- data/lib/ruby-lint/definitions/core/encoding_error.rb +9 -8
- data/lib/ruby-lint/definitions/core/enumerable.rb +123 -292
- data/lib/ruby-lint/definitions/core/enumerator.rb +28 -26
- data/lib/ruby-lint/definitions/core/env.rb +8 -9
- data/lib/ruby-lint/definitions/core/eoferror.rb +9 -8
- data/lib/ruby-lint/definitions/core/erb.rb +201 -226
- data/lib/ruby-lint/definitions/core/errno.rb +1593 -2917
- data/lib/ruby-lint/definitions/core/etc.rb +86 -107
- data/lib/ruby-lint/definitions/core/exception.rb +70 -50
- data/lib/ruby-lint/definitions/core/exception_for_matrix.rb +24 -37
- data/lib/ruby-lint/definitions/core/export_prefix.rb +4 -16
- data/lib/ruby-lint/definitions/core/failed_message.rb +4 -548
- data/lib/ruby-lint/definitions/core/false.rb +9 -7
- data/lib/ruby-lint/definitions/core/false_class.rb +40 -22
- data/lib/ruby-lint/definitions/core/fcntl.rb +120 -7
- data/lib/ruby-lint/definitions/core/fiber.rb +25 -26
- data/lib/ruby-lint/definitions/core/fiber_error.rb +9 -8
- data/lib/ruby-lint/definitions/core/file.rb +1119 -860
- data/lib/ruby-lint/definitions/core/file_test.rb +79 -80
- data/lib/ruby-lint/definitions/core/file_utils.rb +1203 -765
- data/lib/ruby-lint/definitions/core/find.rb +9 -12
- data/lib/ruby-lint/definitions/core/fixnum.rb +113 -663
- data/lib/ruby-lint/definitions/core/float.rb +171 -2755
- data/lib/ruby-lint/definitions/core/float_domain_error.rb +9 -8
- data/lib/ruby-lint/definitions/core/forwardable.rb +37 -30
- data/lib/ruby-lint/definitions/core/gc.rb +31 -38
- data/lib/ruby-lint/definitions/core/gem.rb +2324 -2183
- data/lib/ruby-lint/definitions/core/getopt_long.rb +107 -32
- data/lib/ruby-lint/definitions/core/gserver.rb +61 -61
- data/lib/ruby-lint/definitions/core/hash.rb +354 -1172
- data/lib/ruby-lint/definitions/core/hdr_ext.rb +4 -421
- data/lib/ruby-lint/definitions/core/index_error.rb +9 -8
- data/lib/ruby-lint/definitions/core/install_dirs.rb +4 -421
- data/lib/ruby-lint/definitions/core/integer.rb +93 -67
- data/lib/ruby-lint/definitions/core/interrupt.rb +11 -11
- data/lib/ruby-lint/definitions/core/io.rb +574 -673
- data/lib/ruby-lint/definitions/core/ioerror.rb +9 -8
- data/lib/ruby-lint/definitions/core/ipaddr.rb +115 -90
- data/lib/ruby-lint/definitions/core/ipsocket.rb +301 -472
- data/lib/ruby-lint/definitions/core/irb.rb +1206 -34
- data/lib/ruby-lint/definitions/core/json.rb +483 -74
- data/lib/ruby-lint/definitions/core/kconv.rb +88 -36
- data/lib/ruby-lint/definitions/core/kernel.rb +408 -412
- data/lib/ruby-lint/definitions/core/key_error.rb +9 -8
- data/lib/ruby-lint/definitions/core/libarg.rb +4 -548
- data/lib/ruby-lint/definitions/core/libpathflag.rb +4 -548
- data/lib/ruby-lint/definitions/core/link_so.rb +4 -548
- data/lib/ruby-lint/definitions/core/load_error.rb +24 -25
- data/lib/ruby-lint/definitions/core/local_jump_error.rb +9 -8
- data/lib/ruby-lint/definitions/core/logger.rb +294 -61
- data/lib/ruby-lint/definitions/core/logging.rb +17 -20
- data/lib/ruby-lint/definitions/core/make_makefile.rb +548 -384
- data/lib/ruby-lint/definitions/core/marshal.rb +260 -358
- data/lib/ruby-lint/definitions/core/match_data.rb +51 -48
- data/lib/ruby-lint/definitions/core/math.rb +170 -178
- data/lib/ruby-lint/definitions/core/matrix.rb +354 -297
- data/lib/ruby-lint/definitions/core/method.rb +41 -42
- data/lib/ruby-lint/definitions/core/module.rb +219 -223
- data/lib/ruby-lint/definitions/core/monitor.rb +26 -28
- data/lib/ruby-lint/definitions/core/monitor_mixin.rb +36 -42
- data/lib/ruby-lint/definitions/core/mutex.rb +20 -22
- data/lib/ruby-lint/definitions/core/mutex_m.rb +24 -27
- data/lib/ruby-lint/definitions/core/name_error.rb +13 -13
- data/lib/ruby-lint/definitions/core/nil.rb +9 -7
- data/lib/ruby-lint/definitions/core/nil_class.rb +47 -31
- data/lib/ruby-lint/definitions/core/nkf.rb +76 -9
- data/lib/ruby-lint/definitions/core/no_memory_error.rb +9 -8
- data/lib/ruby-lint/definitions/core/no_method_error.rb +14 -14
- data/lib/ruby-lint/definitions/core/not_implemented_error.rb +9 -8
- data/lib/ruby-lint/definitions/core/numeric.rb +88 -80
- data/lib/ruby-lint/definitions/core/object.rb +20 -20
- data/lib/ruby-lint/definitions/core/object_space.rb +28 -31
- data/lib/ruby-lint/definitions/core/observable.rb +20 -23
- data/lib/ruby-lint/definitions/core/open3.rb +47 -50
- data/lib/ruby-lint/definitions/core/open_ssl.rb +4158 -13
- data/lib/ruby-lint/definitions/core/open_struct.rb +40 -37
- data/lib/ruby-lint/definitions/core/open_uri.rb +142 -25
- data/lib/ruby-lint/definitions/core/option_parser.rb +919 -981
- data/lib/ruby-lint/definitions/core/orig_libpath.rb +4 -32
- data/lib/ruby-lint/definitions/core/outflag.rb +4 -548
- data/lib/ruby-lint/definitions/core/pathname.rb +211 -186
- data/lib/ruby-lint/definitions/core/pp.rb +160 -99
- data/lib/ruby-lint/definitions/core/pretty_print.rb +170 -56
- data/lib/ruby-lint/definitions/core/prime.rb +329 -234
- data/lib/ruby-lint/definitions/core/proc.rb +63 -75
- data/lib/ruby-lint/definitions/core/process.rb +504 -412
- data/lib/ruby-lint/definitions/core/profiler__.rb +13 -16
- data/lib/ruby-lint/definitions/core/pstore.rb +66 -36
- data/lib/ruby-lint/definitions/core/queue.rb +32 -32
- data/lib/ruby-lint/definitions/core/random.rb +29 -29
- data/lib/ruby-lint/definitions/core/range.rb +123 -77
- data/lib/ruby-lint/definitions/core/range_error.rb +9 -8
- data/lib/ruby-lint/definitions/core/rational.rb +84 -67
- data/lib/ruby-lint/definitions/core/rb_config.rb +18 -29
- data/lib/ruby-lint/definitions/core/readline.rb +85 -41
- data/lib/ruby-lint/definitions/core/regexp.rb +239 -293
- data/lib/ruby-lint/definitions/core/regexp_error.rb +9 -8
- data/lib/ruby-lint/definitions/core/resolv.rb +1365 -38
- data/lib/ruby-lint/definitions/core/rpathflag.rb +4 -548
- data/lib/ruby-lint/definitions/core/ruby_copyright.rb +9 -9
- data/lib/ruby-lint/definitions/core/ruby_description.rb +9 -9
- data/lib/ruby-lint/definitions/core/ruby_engine.rb +9 -9
- data/lib/ruby-lint/definitions/core/ruby_patchlevel.rb +9 -9
- data/lib/ruby-lint/definitions/core/ruby_platform.rb +9 -9
- data/lib/ruby-lint/definitions/core/ruby_release_date.rb +9 -9
- data/lib/ruby-lint/definitions/core/ruby_revision.rb +4 -246
- data/lib/ruby-lint/definitions/core/ruby_version.rb +9 -9
- data/lib/ruby-lint/definitions/core/runtime_error.rb +9 -8
- data/lib/ruby-lint/definitions/core/scan_error.rb +9 -8
- data/lib/ruby-lint/definitions/core/scanf.rb +83 -7
- data/lib/ruby-lint/definitions/core/script_error.rb +9 -8
- data/lib/ruby-lint/definitions/core/secure_random.rb +22 -25
- data/lib/ruby-lint/definitions/core/security_error.rb +9 -8
- data/lib/ruby-lint/definitions/core/set.rb +154 -504
- data/lib/ruby-lint/definitions/core/shellwords.rb +27 -28
- data/lib/ruby-lint/definitions/core/signal.rb +21 -29
- data/lib/ruby-lint/definitions/core/signal_exception.rb +15 -15
- data/lib/ruby-lint/definitions/core/simple_delegator.rb +10 -26
- data/lib/ruby-lint/definitions/core/single_forwardable.rb +35 -38
- data/lib/ruby-lint/definitions/core/singleton.rb +21 -28
- data/lib/ruby-lint/definitions/core/sized_queue.rb +35 -31
- data/lib/ruby-lint/definitions/core/socket.rb +2942 -438
- data/lib/ruby-lint/definitions/core/socket_error.rb +4 -54
- data/lib/ruby-lint/definitions/core/sorted_set.rb +49 -263
- data/lib/ruby-lint/definitions/core/src_ext.rb +4 -421
- data/lib/ruby-lint/definitions/core/standard_error.rb +9 -8
- data/lib/ruby-lint/definitions/core/stderr.rb +9 -9
- data/lib/ruby-lint/definitions/core/stdin.rb +9 -9
- data/lib/ruby-lint/definitions/core/stdout.rb +9 -9
- data/lib/ruby-lint/definitions/core/stop_iteration.rb +10 -8
- data/lib/ruby-lint/definitions/core/string.rb +451 -1222
- data/lib/ruby-lint/definitions/core/string_io.rb +226 -518
- data/lib/ruby-lint/definitions/core/string_scanner.rb +107 -108
- data/lib/ruby-lint/definitions/core/struct.rb +113 -761
- data/lib/ruby-lint/definitions/core/syck.rb +1292 -25
- data/lib/ruby-lint/definitions/core/symbol.rb +78 -59
- data/lib/ruby-lint/definitions/core/syntax_error.rb +23 -33
- data/lib/ruby-lint/definitions/core/system_call_error.rb +26 -24
- data/lib/ruby-lint/definitions/core/system_exit.rb +15 -15
- data/lib/ruby-lint/definitions/core/system_stack_error.rb +9 -8
- data/lib/ruby-lint/definitions/core/tcpserver.rb +291 -486
- data/lib/ruby-lint/definitions/core/tcpsocket.rb +302 -483
- data/lib/ruby-lint/definitions/core/tempfile.rb +39 -832
- data/lib/ruby-lint/definitions/core/th_wait.rb +35 -70
- data/lib/ruby-lint/definitions/core/thread.rb +131 -144
- data/lib/ruby-lint/definitions/core/thread_error.rb +9 -8
- data/lib/ruby-lint/definitions/core/thread_group.rb +23 -16
- data/lib/ruby-lint/definitions/core/threads_wait.rb +43 -63
- data/lib/ruby-lint/definitions/core/time.rb +236 -159
- data/lib/ruby-lint/definitions/core/timeout.rb +40 -14
- data/lib/ruby-lint/definitions/core/timeout_error.rb +4 -54
- data/lib/ruby-lint/definitions/core/toplevel_binding.rb +9 -7
- data/lib/ruby-lint/definitions/core/true.rb +9 -7
- data/lib/ruby-lint/definitions/core/true_class.rb +40 -22
- data/lib/ruby-lint/definitions/core/try_link.rb +4 -548
- data/lib/ruby-lint/definitions/core/tsort.rb +21 -19
- data/lib/ruby-lint/definitions/core/type_error.rb +9 -8
- data/lib/ruby-lint/definitions/core/udpsocket.rb +302 -487
- data/lib/ruby-lint/definitions/core/unbound_method.rb +35 -36
- data/lib/ruby-lint/definitions/core/universal_ints.rb +4 -421
- data/lib/ruby-lint/definitions/core/unixserver.rb +291 -490
- data/lib/ruby-lint/definitions/core/unixsocket.rb +314 -476
- data/lib/ruby-lint/definitions/core/uri.rb +1309 -38
- data/lib/ruby-lint/definitions/core/vector.rb +143 -242
- data/lib/ruby-lint/definitions/core/weak_ref.rb +29 -32
- data/lib/ruby-lint/definitions/core/webrick.rb +2430 -7
- data/lib/ruby-lint/definitions/core/xmlrpc.rb +5 -7
- data/lib/ruby-lint/definitions/core/yaml.rb +109 -2325
- data/lib/ruby-lint/definitions/core/zero_division_error.rb +9 -8
- data/lib/ruby-lint/definitions/core/zlib.rb +272 -8526
- data/lib/ruby-lint/definitions/gems/.gitkeep +0 -0
- data/lib/ruby-lint/definitions/gems/devise.rb +2271 -0
- data/lib/ruby-lint/definitions/gems/nokogiri.rb +7668 -0
- data/lib/ruby-lint/definitions/rails/abstract_controller.rb +508 -322
- data/lib/ruby-lint/definitions/rails/action_controller.rb +2252 -4462
- data/lib/ruby-lint/definitions/rails/action_dispatch.rb +3448 -1846
- data/lib/ruby-lint/definitions/rails/action_mailer.rb +750 -1349
- data/lib/ruby-lint/definitions/rails/action_pack.rb +31 -14
- data/lib/ruby-lint/definitions/rails/action_view.rb +5788 -5748
- data/lib/ruby-lint/definitions/rails/active_model.rb +1015 -1065
- data/lib/ruby-lint/definitions/rails/active_record.rb +8080 -8075
- data/lib/ruby-lint/definitions/rails/active_support.rb +3844 -4153
- data/lib/ruby-lint/definitions/rails/arel.rb +6752 -2301
- data/lib/ruby-lint/definitions/rails/rails.rb +1553 -2383
- data/lib/ruby-lint/definitions/rails/sprockets.rb +1131 -3140
- data/lib/ruby-lint/file_list.rb +43 -0
- data/lib/ruby-lint/file_scanner.rb +3 -3
- data/lib/ruby-lint/generated_constant.rb +5 -1
- data/lib/ruby-lint/inspector.rb +108 -46
- data/lib/ruby-lint/method_call/attribute.rb +3 -1
- data/lib/ruby-lint/rake_task.rb +98 -0
- data/lib/ruby-lint/ruby_lint.rb +11 -0
- data/lib/ruby-lint/runner.rb +0 -11
- data/lib/ruby-lint/template/definition.erb +26 -19
- data/lib/ruby-lint/template/scope.rb +12 -0
- data/lib/ruby-lint/variable_predicates.rb +14 -0
- data/lib/ruby-lint/version.rb +1 -1
- data/lib/ruby-lint/virtual_machine.rb +82 -46
- data/ruby-lint.gemspec +3 -14
- data/spec/ruby-lint/analysis/undefined_methods_spec.rb +20 -3
- data/spec/ruby-lint/analysis/useless_equality_checks_spec.rb +107 -0
- data/spec/ruby-lint/configuration_spec.rb +20 -0
- data/spec/ruby-lint/constant_loader_spec.rb +79 -0
- data/spec/ruby-lint/definition/constant_proxy_spec.rb +65 -34
- data/spec/ruby-lint/definition/registry_spec.rb +106 -0
- data/spec/ruby-lint/definition/ruby_object_spec.rb +25 -25
- data/spec/ruby-lint/definition_builder/primitive_spec.rb +10 -10
- data/spec/ruby-lint/definition_builder/ruby_class_spec.rb +18 -19
- data/spec/ruby-lint/definition_builder/ruby_method_spec.rb +12 -12
- data/spec/ruby-lint/definition_builder/ruby_module_spec.rb +14 -14
- data/spec/ruby-lint/definitions/argv_spec.rb +3 -2
- data/spec/ruby-lint/definitions/env_spec.rb +5 -3
- data/spec/ruby-lint/definitions/file_spec.rb +17 -0
- data/spec/ruby-lint/definitions/fixnum_spec.rb +18 -0
- data/spec/ruby-lint/definitions/io_spec.rb +5 -3
- data/spec/ruby-lint/definitions/kernel_spec.rb +18 -0
- data/spec/ruby-lint/definitions/range_spec.rb +21 -0
- data/spec/ruby-lint/definitions/string_spec.rb +20 -0
- data/spec/ruby-lint/file_list_spec.rb +25 -0
- data/spec/ruby-lint/file_scanner_spec.rb +12 -0
- data/spec/ruby-lint/inspector_spec.rb +203 -23
- data/spec/ruby-lint/method_call/.gitkeep +0 -0
- data/spec/ruby-lint/variable_predicates_spec.rb +30 -0
- data/spec/ruby-lint/virtual_machine/associate_nodes_spec.rb +6 -4
- data/spec/ruby-lint/virtual_machine/autoloading_spec.rb +3 -16
- data/spec/ruby-lint/virtual_machine/classes/redefining_spec.rb +28 -1
- data/spec/ruby-lint/virtual_machine/complex/rails_spec.rb +12 -9
- data/spec/ruby-lint/virtual_machine/global_variables_spec.rb +8 -5
- data/spec/ruby-lint/virtual_machine/method_call_tracking_spec.rb +0 -7
- data/spec/ruby-lint/virtual_machine/methods/attr_spec.rb +66 -0
- data/spec/ruby-lint/virtual_machine/methods/calls_spec.rb +25 -0
- data/spec/ruby-lint/virtual_machine/methods/define_method_spec.rb +1 -1
- data/spec/ruby-lint/virtual_machine/methods/docstrings_spec.rb +20 -9
- data/spec/ruby-lint/virtual_machine/methods/kernel_spec.rb +25 -0
- data/spec/ruby-lint/virtual_machine/methods/patching_spec.rb +0 -6
- data/spec/ruby-lint/virtual_machine/methods/square_bracket_spec.rb +32 -0
- data/spec/ruby-lint/virtual_machine/self_spec.rb +37 -0
- data/spec/spec_helper.rb +0 -1
- data/spec/support/building.rb +0 -4
- data/spec/support/definitions.rb +16 -0
- data/task/generate.rake +35 -33
- data/task/todo.rake +1 -1
- metadata +73 -100
- data/lib/ruby-lint/cli/ast.rb +0 -50
- data/lib/ruby-lint/cli/plot.rb +0 -94
- data/lib/ruby-lint/definitions/core/arg0.rb +0 -9
- data/lib/ruby-lint/definitions/core/autoload.rb +0 -41
- data/lib/ruby-lint/definitions/core/continuation.rb +0 -10
- data/lib/ruby-lint/definitions/core/default_record_separator.rb +0 -9
- data/lib/ruby-lint/definitions/core/fatal_error.rb +0 -10
- data/lib/ruby-lint/definitions/core/file_list.rb +0 -729
- data/lib/ruby-lint/definitions/core/immediate_value.rb +0 -21
- data/lib/ruby-lint/definitions/core/md5.rb +0 -80
- data/lib/ruby-lint/definitions/core/memory_segmention_error.rb +0 -10
- data/lib/ruby-lint/definitions/core/precision.rb +0 -23
- data/lib/ruby-lint/definitions/core/primitive_failure.rb +0 -10
- data/lib/ruby-lint/definitions/core/psych.rb +0 -139
- data/lib/ruby-lint/definitions/core/rake.rb +0 -4786
- data/lib/ruby-lint/definitions/core/rake_file_utils.rb +0 -205
- data/lib/ruby-lint/definitions/core/rakeversion.rb +0 -9
- data/lib/ruby-lint/definitions/core/rdoc.rb +0 -15
- data/lib/ruby-lint/definitions/core/rexml.rb +0 -13
- data/lib/ruby-lint/definitions/core/rss.rb +0 -13
- data/lib/ruby-lint/definitions/core/sha1.rb +0 -80
- data/lib/ruby-lint/definitions/core/unmarshalable.rb +0 -15
- data/lib/ruby-lint/definitions/core/unsupported_library_error.rb +0 -10
- data/lib/ruby-lint/definitions/global_variables.rb +0 -9
- data/lib/ruby-lint/definitions/rails.rb +0 -12
- data/lib/ruby-lint/global_scope.rb +0 -56
- data/spec/ruby-lint/cli/ast_spec.rb +0 -23
- data/spec/ruby-lint/method_call/assign_member_spec.rb +0 -25
|
@@ -1,30 +1,37 @@
|
|
|
1
1
|
# This file was automatically generated, any manual changes will be lost the
|
|
2
2
|
# next time this file is generated.
|
|
3
3
|
#
|
|
4
|
-
# Created: <%= Time.new %>
|
|
5
4
|
# Platform: <%= RUBY_ENGINE %> <%= Rubinius::VERSION rescue RUBY_VERSION %>
|
|
6
5
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
6
|
+
RubyLint.registry.register('<%= @constants[0].name %>') do |defs|
|
|
7
|
+
<%- @constants.each do |constant| -%>
|
|
8
|
+
defs.define_constant('<%= constant.name %>') do |klass|
|
|
9
|
+
<%- if constant.superclass -%>
|
|
10
|
+
klass.inherits(defs.constant_proxy('<%= constant.superclass %>', RubyLint.registry))
|
|
11
|
+
<%- end -%>
|
|
12
|
+
<%- constant.modules.each do |mod| -%>
|
|
13
|
+
klass.inherits(defs.constant_proxy('<%= mod %>', RubyLint.registry))
|
|
14
|
+
<%- end -%>
|
|
12
15
|
|
|
13
|
-
|
|
14
|
-
|
|
16
|
+
<%- constant.methods.each do |type, collection| -%>
|
|
17
|
+
<%- collection.each do |name, args| -%>
|
|
15
18
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
19
|
+
<%- if args.empty? -%>
|
|
20
|
+
klass.define_<%= type %>('<%= name %>')
|
|
21
|
+
<%- else -%>
|
|
22
|
+
klass.define_<%= type %>('<%= name %>') do |method|
|
|
23
|
+
<%- args.each do |arg| -%>
|
|
24
|
+
method.define_<%= arg[:type] %>('<%= arg[:name] %>')
|
|
25
|
+
<%- end -%>
|
|
26
|
+
<%- if return_instance?(type, name) -%>
|
|
27
|
+
|
|
28
|
+
method.returns { |object| object.instance }
|
|
29
|
+
<%- end -%>
|
|
30
|
+
end
|
|
31
|
+
<%- end -%>
|
|
32
|
+
<%- end -%>
|
|
22
33
|
<%- end -%>
|
|
23
34
|
end
|
|
24
|
-
|
|
25
|
-
<%- end -%>
|
|
35
|
+
|
|
26
36
|
<%- end -%>
|
|
27
37
|
end
|
|
28
|
-
<% end %>
|
|
29
|
-
|
|
30
|
-
RubyLint::GlobalScope.definitions.lookup(:const, '<%= @constants[0].name %>').deep_freeze
|
|
@@ -14,6 +14,18 @@ module RubyLint
|
|
|
14
14
|
end
|
|
15
15
|
end
|
|
16
16
|
|
|
17
|
+
##
|
|
18
|
+
# Returns `true` if the method's definition should return an instance of
|
|
19
|
+
# the container.
|
|
20
|
+
#
|
|
21
|
+
# @param [Symbol] type
|
|
22
|
+
# @param [Symbol] name
|
|
23
|
+
#
|
|
24
|
+
def return_instance?(type, name)
|
|
25
|
+
return (type == :method && name == :new) ||
|
|
26
|
+
(type == :instance_method && name == :initialize)
|
|
27
|
+
end
|
|
28
|
+
|
|
17
29
|
##
|
|
18
30
|
# @return [Binding]
|
|
19
31
|
#
|
|
@@ -34,6 +34,13 @@ module RubyLint
|
|
|
34
34
|
:nil => 'NilClass'
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
+
##
|
|
38
|
+
# List of variable types used in {#variable?}.
|
|
39
|
+
#
|
|
40
|
+
# @return [Array]
|
|
41
|
+
#
|
|
42
|
+
VARIABLE_TYPES = [:lvar, :ivar, :cvar, :gvar]
|
|
43
|
+
|
|
37
44
|
PREDICATE_METHODS.each do |type|
|
|
38
45
|
define_method("#{type}?") do
|
|
39
46
|
return @type == type
|
|
@@ -60,5 +67,12 @@ module RubyLint
|
|
|
60
67
|
def ruby_class
|
|
61
68
|
return RUBY_CLASSES[type]
|
|
62
69
|
end
|
|
70
|
+
|
|
71
|
+
##
|
|
72
|
+
# @return [TrueClass|FalseClass]
|
|
73
|
+
#
|
|
74
|
+
def variable?
|
|
75
|
+
return VARIABLE_TYPES.include?(type)
|
|
76
|
+
end
|
|
63
77
|
end # VariablePredicates
|
|
64
78
|
end # RubyLint
|
data/lib/ruby-lint/version.rb
CHANGED
|
@@ -161,16 +161,19 @@ module RubyLint
|
|
|
161
161
|
def after_initialize
|
|
162
162
|
@comments ||= {}
|
|
163
163
|
|
|
164
|
-
@associations
|
|
165
|
-
@definitions
|
|
166
|
-
@
|
|
167
|
-
@
|
|
168
|
-
@
|
|
169
|
-
@
|
|
170
|
-
@
|
|
164
|
+
@associations = {}
|
|
165
|
+
@definitions = initial_definitions
|
|
166
|
+
@constant_loader = ConstantLoader.new(:definitions => @definitions)
|
|
167
|
+
@scopes = [@definitions]
|
|
168
|
+
@value_stack = NestedStack.new
|
|
169
|
+
@variable_stack = NestedStack.new
|
|
170
|
+
@ignored_nodes = []
|
|
171
|
+
@visibility = :public
|
|
171
172
|
|
|
172
173
|
reset_docstring_tags
|
|
173
174
|
reset_method_type
|
|
175
|
+
|
|
176
|
+
@constant_loader.bootstrap
|
|
174
177
|
end
|
|
175
178
|
|
|
176
179
|
##
|
|
@@ -182,6 +185,9 @@ module RubyLint
|
|
|
182
185
|
def run(ast)
|
|
183
186
|
ast = [ast] unless ast.is_a?(Array)
|
|
184
187
|
|
|
188
|
+
# pre-load all the built-in definitions.
|
|
189
|
+
@constant_loader.run(ast)
|
|
190
|
+
|
|
185
191
|
ast.each { |node| iterate(node) }
|
|
186
192
|
|
|
187
193
|
freeze
|
|
@@ -386,7 +392,7 @@ module RubyLint
|
|
|
386
392
|
def after_array(node)
|
|
387
393
|
builder = DefinitionBuilder::RubyArray.new(
|
|
388
394
|
node,
|
|
389
|
-
|
|
395
|
+
self,
|
|
390
396
|
:values => value_stack.pop
|
|
391
397
|
)
|
|
392
398
|
|
|
@@ -408,7 +414,7 @@ module RubyLint
|
|
|
408
414
|
def after_hash(node)
|
|
409
415
|
builder = DefinitionBuilder::RubyHash.new(
|
|
410
416
|
node,
|
|
411
|
-
|
|
417
|
+
self,
|
|
412
418
|
:values => value_stack.pop
|
|
413
419
|
)
|
|
414
420
|
|
|
@@ -478,6 +484,7 @@ module RubyLint
|
|
|
478
484
|
parent = evaluate_node(parent_node)
|
|
479
485
|
|
|
480
486
|
if !parent or !parent.const?
|
|
487
|
+
# FIXME: this should use `definitions` instead.
|
|
481
488
|
parent = current_scope.lookup(:const, 'Object')
|
|
482
489
|
end
|
|
483
490
|
end
|
|
@@ -498,7 +505,7 @@ module RubyLint
|
|
|
498
505
|
# @param [RubyLint::AST::Node] node
|
|
499
506
|
#
|
|
500
507
|
def on_block(node)
|
|
501
|
-
builder = DefinitionBuilder::RubyBlock.new(node,
|
|
508
|
+
builder = DefinitionBuilder::RubyBlock.new(node, self)
|
|
502
509
|
definition = builder.build
|
|
503
510
|
|
|
504
511
|
associate_node(node, definition)
|
|
@@ -555,7 +562,7 @@ module RubyLint
|
|
|
555
562
|
|
|
556
563
|
builder = DefinitionBuilder::RubyMethod.new(
|
|
557
564
|
node,
|
|
558
|
-
|
|
565
|
+
self,
|
|
559
566
|
:type => @method_type,
|
|
560
567
|
:receiver => receiver,
|
|
561
568
|
:visibility => @visibility
|
|
@@ -613,6 +620,7 @@ module RubyLint
|
|
|
613
620
|
update_parents_from_tag(docstring_tags.param_tags[name], var)
|
|
614
621
|
end
|
|
615
622
|
|
|
623
|
+
associate_node(node, var)
|
|
616
624
|
current_scope.add(type, name, var)
|
|
617
625
|
current_scope.add_definition(var)
|
|
618
626
|
end
|
|
@@ -660,6 +668,13 @@ Received: #{arguments.length}
|
|
|
660
668
|
EOF
|
|
661
669
|
end
|
|
662
670
|
|
|
671
|
+
# Associate the argument definitions with their nodes.
|
|
672
|
+
arguments.each_with_index do |obj, index|
|
|
673
|
+
arg_node = node.children[2 + index]
|
|
674
|
+
|
|
675
|
+
associate_node(arg_node, obj)
|
|
676
|
+
end
|
|
677
|
+
|
|
663
678
|
# If the receiver doesn't exist there's no point in associating a context
|
|
664
679
|
# with it.
|
|
665
680
|
if receiver and !receiver_definition
|
|
@@ -736,6 +751,52 @@ Received: #{arguments.length}
|
|
|
736
751
|
evaluator.evaluate(arguments, current_scope)
|
|
737
752
|
end
|
|
738
753
|
|
|
754
|
+
##
|
|
755
|
+
# @return [RubyLint::Definition::RubyObject]
|
|
756
|
+
#
|
|
757
|
+
def current_scope
|
|
758
|
+
return @scopes.last
|
|
759
|
+
end
|
|
760
|
+
|
|
761
|
+
##
|
|
762
|
+
#
|
|
763
|
+
# @return [RubyLint::Definition::RubyObject]
|
|
764
|
+
#
|
|
765
|
+
def previous_scope
|
|
766
|
+
return @scopes[-2]
|
|
767
|
+
end
|
|
768
|
+
|
|
769
|
+
##
|
|
770
|
+
# @param [String] name
|
|
771
|
+
# @return [RubyLint::Definition::RubyObject]
|
|
772
|
+
#
|
|
773
|
+
def global_constant(name)
|
|
774
|
+
found = definitions.lookup(:const, name)
|
|
775
|
+
|
|
776
|
+
# Didn't find it? Lets see if the constant loader knows about it.
|
|
777
|
+
unless found
|
|
778
|
+
@constant_loader.load_constant(name)
|
|
779
|
+
|
|
780
|
+
found = definitions.lookup(:const, name)
|
|
781
|
+
end
|
|
782
|
+
|
|
783
|
+
return found
|
|
784
|
+
end
|
|
785
|
+
|
|
786
|
+
##
|
|
787
|
+
# Evaluates and returns the value of the given node.
|
|
788
|
+
#
|
|
789
|
+
# @param [RubyLint::AST::Node] node
|
|
790
|
+
# @return [RubyLint::Definition::RubyObject]
|
|
791
|
+
#
|
|
792
|
+
def evaluate_node(node)
|
|
793
|
+
value_stack.add_stack
|
|
794
|
+
|
|
795
|
+
iterate(node)
|
|
796
|
+
|
|
797
|
+
return value_stack.pop.first
|
|
798
|
+
end
|
|
799
|
+
|
|
739
800
|
private
|
|
740
801
|
|
|
741
802
|
##
|
|
@@ -747,10 +808,14 @@ Received: #{arguments.length}
|
|
|
747
808
|
definitions = Definition::RubyObject.new(
|
|
748
809
|
:name => 'root',
|
|
749
810
|
:type => :root,
|
|
750
|
-
:
|
|
751
|
-
:
|
|
811
|
+
:instance_type => :instance,
|
|
812
|
+
:inherit_self => false
|
|
752
813
|
)
|
|
753
814
|
|
|
815
|
+
definitions.parents = [
|
|
816
|
+
definitions.constant_proxy('Object', RubyLint.registry)
|
|
817
|
+
]
|
|
818
|
+
|
|
754
819
|
definitions.define_self
|
|
755
820
|
|
|
756
821
|
return definitions
|
|
@@ -764,7 +829,7 @@ Received: #{arguments.length}
|
|
|
764
829
|
# @param [Hash] options
|
|
765
830
|
#
|
|
766
831
|
def define_module(node, definition_builder, options = {})
|
|
767
|
-
builder = definition_builder.new(node,
|
|
832
|
+
builder = definition_builder.new(node, self, options)
|
|
768
833
|
definition = builder.build
|
|
769
834
|
scope = builder.scope
|
|
770
835
|
existing = scope.lookup(definition.type, definition.name, false)
|
|
@@ -784,20 +849,6 @@ Received: #{arguments.length}
|
|
|
784
849
|
push_scope(definition)
|
|
785
850
|
end
|
|
786
851
|
|
|
787
|
-
##
|
|
788
|
-
# @return [RubyLint::Definition::RubyObject]
|
|
789
|
-
#
|
|
790
|
-
def current_scope
|
|
791
|
-
return @scopes.last
|
|
792
|
-
end
|
|
793
|
-
|
|
794
|
-
##
|
|
795
|
-
# @return [RubyLint::Definition::RubyObject]
|
|
796
|
-
#
|
|
797
|
-
def previous_scope
|
|
798
|
-
return @scopes[-2]
|
|
799
|
-
end
|
|
800
|
-
|
|
801
852
|
##
|
|
802
853
|
# Associates the given node and defintion with each other.
|
|
803
854
|
#
|
|
@@ -950,7 +1001,7 @@ Received: #{arguments.length}
|
|
|
950
1001
|
# @param [Hash] options
|
|
951
1002
|
#
|
|
952
1003
|
def create_primitive(node, options = {})
|
|
953
|
-
builder = DefinitionBuilder::Primitive.new(node,
|
|
1004
|
+
builder = DefinitionBuilder::Primitive.new(node, self, options)
|
|
954
1005
|
|
|
955
1006
|
return builder.build
|
|
956
1007
|
end
|
|
@@ -1037,20 +1088,6 @@ Received: #{arguments.length}
|
|
|
1037
1088
|
end
|
|
1038
1089
|
end
|
|
1039
1090
|
|
|
1040
|
-
##
|
|
1041
|
-
# Evaluates and returns the value of the given node.
|
|
1042
|
-
#
|
|
1043
|
-
# @param [RubyLint::AST::Node] node
|
|
1044
|
-
# @return [RubyLint::Definition::RubyObject]
|
|
1045
|
-
#
|
|
1046
|
-
def evaluate_node(node)
|
|
1047
|
-
value_stack.add_stack
|
|
1048
|
-
|
|
1049
|
-
iterate(node)
|
|
1050
|
-
|
|
1051
|
-
return value_stack.pop.first
|
|
1052
|
-
end
|
|
1053
|
-
|
|
1054
1091
|
##
|
|
1055
1092
|
# Includes the definition `inherit` in the list of parent definitions of
|
|
1056
1093
|
# `definition`.
|
|
@@ -1145,8 +1182,7 @@ Received: #{arguments.length}
|
|
|
1145
1182
|
# @return [RubyLint::Definition::RubyObject]
|
|
1146
1183
|
#
|
|
1147
1184
|
def lookup_type_definition(name)
|
|
1148
|
-
return current_scope.lookup(:const, name) ||
|
|
1149
|
-
GlobalScope.global_constant(name)
|
|
1185
|
+
return current_scope.lookup(:const, name) || global_constant(name)
|
|
1150
1186
|
end
|
|
1151
1187
|
|
|
1152
1188
|
##
|
|
@@ -1159,7 +1195,7 @@ Received: #{arguments.length}
|
|
|
1159
1195
|
# THINK: currently ruby-lint assumes methods always return a single type
|
|
1160
1196
|
# but YARD allows you to specify multiple ones. For now we'll take the
|
|
1161
1197
|
# first one but there should be a nicer way to do this.
|
|
1162
|
-
definition.returns(definitions[0]) if definitions[0]
|
|
1198
|
+
definition.returns(definitions[0].instance) if definitions[0]
|
|
1163
1199
|
end
|
|
1164
1200
|
|
|
1165
1201
|
##
|
data/ruby-lint.gemspec
CHANGED
|
@@ -12,34 +12,23 @@ Gem::Specification.new do |s|
|
|
|
12
12
|
s.executables = ['ruby-lint']
|
|
13
13
|
s.license = 'MIT'
|
|
14
14
|
|
|
15
|
-
s.post_install_message =
|
|
16
|
-
|
|
17
|
-
project and as such there will be bugs, false positives and otherwise weird
|
|
18
|
-
behaviour. If you encounter any of these issues please report them (and provide
|
|
19
|
-
some sample code) at the issue tracker:
|
|
20
|
-
|
|
21
|
-
https://github.com/YorickPeterse/ruby-lint/issues/new
|
|
22
|
-
|
|
23
|
-
If you have any further questions you can find me on Twitter/Freenode/Github
|
|
24
|
-
using the handle "yorickpeterse".
|
|
25
|
-
EOF
|
|
15
|
+
s.post_install_message = 'Please report any issues at: ' \
|
|
16
|
+
'https://github.com/YorickPeterse/ruby-lint/issues/new'
|
|
26
17
|
|
|
27
18
|
s.files = File.read(File.expand_path('../MANIFEST', __FILE__)).split("\n")
|
|
28
19
|
|
|
29
20
|
s.has_rdoc = 'yard'
|
|
30
21
|
s.required_ruby_version = '>= 1.9.3'
|
|
31
22
|
|
|
32
|
-
s.add_dependency 'parser', ['~> 2.
|
|
23
|
+
s.add_dependency 'parser', ['~> 2.1', '>= 2.1.1']
|
|
33
24
|
s.add_dependency 'slop', ['~> 3.4', '>= 3.4.7']
|
|
34
25
|
|
|
35
26
|
s.add_development_dependency 'rake'
|
|
36
27
|
s.add_development_dependency 'rspec', ['>= 2.14']
|
|
37
28
|
s.add_development_dependency 'yard'
|
|
38
|
-
s.add_development_dependency 'pry-rescue'
|
|
39
29
|
s.add_development_dependency 'simplecov'
|
|
40
30
|
s.add_development_dependency 'coveralls'
|
|
41
31
|
s.add_development_dependency 'json'
|
|
42
32
|
s.add_development_dependency 'kramdown'
|
|
43
33
|
s.add_development_dependency 'redcard'
|
|
44
|
-
s.add_development_dependency 'gnuplot'
|
|
45
34
|
end
|
|
@@ -48,7 +48,7 @@ String.example_method
|
|
|
48
48
|
example 'add an error when calling a method defined in a different scope' do
|
|
49
49
|
code = <<-CODE
|
|
50
50
|
class Person
|
|
51
|
-
def
|
|
51
|
+
def person_name
|
|
52
52
|
return 'name'
|
|
53
53
|
end
|
|
54
54
|
|
|
@@ -57,7 +57,7 @@ class Person
|
|
|
57
57
|
end
|
|
58
58
|
end
|
|
59
59
|
|
|
60
|
-
|
|
60
|
+
person_name
|
|
61
61
|
CODE
|
|
62
62
|
|
|
63
63
|
report = build_report(code, RubyLint::Analysis::UndefinedMethods)
|
|
@@ -70,7 +70,7 @@ name
|
|
|
70
70
|
|
|
71
71
|
entry.line.should == 11
|
|
72
72
|
entry.column.should == 1
|
|
73
|
-
entry.message.should == 'undefined method
|
|
73
|
+
entry.message.should == 'undefined method person_name'
|
|
74
74
|
end
|
|
75
75
|
|
|
76
76
|
describe 'core Ruby types' do
|
|
@@ -317,4 +317,21 @@ end
|
|
|
317
317
|
entry.message.should == 'undefined method to_foo on an instance of ' \
|
|
318
318
|
'Fixnum, Bignum or Numeric'
|
|
319
319
|
end
|
|
320
|
+
|
|
321
|
+
context 'method missing' do
|
|
322
|
+
example 'do not add errors when method_missing is defined' do
|
|
323
|
+
code = <<-CODE
|
|
324
|
+
class Foo
|
|
325
|
+
def method_missing; end
|
|
326
|
+
end
|
|
327
|
+
|
|
328
|
+
foo = Foo.new
|
|
329
|
+
foo.bar
|
|
330
|
+
CODE
|
|
331
|
+
|
|
332
|
+
report = build_report(code, RubyLint::Analysis::UndefinedMethods)
|
|
333
|
+
|
|
334
|
+
report.entries.empty?.should == true
|
|
335
|
+
end
|
|
336
|
+
end
|
|
320
337
|
end
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe RubyLint::Analysis::UselessEqualityChecks do
|
|
4
|
+
example 'compare a String literal with a Fixnum literal' do
|
|
5
|
+
code = "'foo' == 10"
|
|
6
|
+
report = build_report(code, RubyLint::Analysis::UselessEqualityChecks)
|
|
7
|
+
entry = report.entries[0]
|
|
8
|
+
|
|
9
|
+
entry.line.should == 1
|
|
10
|
+
entry.column.should == 1
|
|
11
|
+
entry.message.should == 'Comparing String with Fixnum evaluates to false'
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
example 'compare a variable with a Fixnum literal' do
|
|
15
|
+
code = <<-EOF
|
|
16
|
+
string = 'foo'
|
|
17
|
+
|
|
18
|
+
string == 10
|
|
19
|
+
EOF
|
|
20
|
+
|
|
21
|
+
report = build_report(code, RubyLint::Analysis::UselessEqualityChecks)
|
|
22
|
+
entry = report.entries[0]
|
|
23
|
+
|
|
24
|
+
entry.message.should == 'Comparing String with Fixnum evaluates to false'
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
example 'compare two variables' do
|
|
28
|
+
code = <<-EOF
|
|
29
|
+
string = 'foo'
|
|
30
|
+
number = 10
|
|
31
|
+
|
|
32
|
+
string == number
|
|
33
|
+
EOF
|
|
34
|
+
|
|
35
|
+
report = build_report(code, RubyLint::Analysis::UselessEqualityChecks)
|
|
36
|
+
entry = report.entries[0]
|
|
37
|
+
|
|
38
|
+
entry.message.should == 'Comparing String with Fixnum evaluates to false'
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
example 'compare a String literal with a method call' do
|
|
42
|
+
code = <<-EOF
|
|
43
|
+
# @return [Fixnum]
|
|
44
|
+
def number
|
|
45
|
+
return 10
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
'foo' == number
|
|
49
|
+
EOF
|
|
50
|
+
|
|
51
|
+
report = build_report(code, RubyLint::Analysis::UselessEqualityChecks)
|
|
52
|
+
entry = report.entries[0]
|
|
53
|
+
|
|
54
|
+
entry.message.should == 'Comparing String with Fixnum evaluates to false'
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
example 'ignore values that are unknown' do
|
|
58
|
+
code = <<-EOF
|
|
59
|
+
def foo
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
10 == foo
|
|
63
|
+
EOF
|
|
64
|
+
|
|
65
|
+
report = build_report(code, RubyLint::Analysis::UselessEqualityChecks)
|
|
66
|
+
|
|
67
|
+
report.entries.empty?.should == true
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
example 'calling methods on objects that return unknown values' do
|
|
71
|
+
code = <<-CODE
|
|
72
|
+
def example(number)
|
|
73
|
+
return '10' == number.to_s
|
|
74
|
+
end
|
|
75
|
+
CODE
|
|
76
|
+
|
|
77
|
+
report = build_report(code, RubyLint::Analysis::UselessEqualityChecks)
|
|
78
|
+
|
|
79
|
+
report.entries.empty?.should == true
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
context 'ignoring variables with unknown values' do
|
|
83
|
+
example 'ignore a local variable without a value' do
|
|
84
|
+
code = <<-CODE
|
|
85
|
+
[10, 20].each do |number|
|
|
86
|
+
number == false
|
|
87
|
+
end
|
|
88
|
+
CODE
|
|
89
|
+
|
|
90
|
+
report = build_report(code, RubyLint::Analysis::UselessEqualityChecks)
|
|
91
|
+
|
|
92
|
+
report.entries.empty?.should == true
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
example 'ignore an instance variable without a value' do
|
|
96
|
+
code = <<-CODE
|
|
97
|
+
[10, 20].each do |@number|
|
|
98
|
+
@number == false
|
|
99
|
+
end
|
|
100
|
+
CODE
|
|
101
|
+
|
|
102
|
+
report = build_report(code, RubyLint::Analysis::UselessEqualityChecks)
|
|
103
|
+
|
|
104
|
+
report.entries.empty?.should == true
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
end
|