Class: RuboCop::Cop::RSpec::InstanceVariable
- Includes:
- TopLevelGroup
- Defined in:
- lib/rubocop/cop/rspec/instance_variable.rb
Overview
Checks for instance variable usage in specs.
This cop can be configured with the option AssignmentOnly which will configure the cop to only register offenses on instance variable usage if the instance variable is also assigned within the spec
Constant Summary collapse
- MSG =
'Avoid instance variables - use let, ' \ 'a method call, or a local variable (if possible).'
Constants included from TopLevelGroup
TopLevelGroup::DEPRECATED_MODULE_METHOD_WARNING
Instance Method Summary collapse
- #custom_matcher?(node) ⇒ Object
- #dynamic_class?(node) ⇒ Object
- #ivar_assigned?(node) ⇒ Object
- #ivar_usage(node) ⇒ Object
- #on_top_level_group(node) ⇒ Object
Methods included from TopLevelGroup
#on_new_investigation, #top_level_groups
Methods inherited from Base
inherited, #on_new_investigation
Methods included from RSpec::Language
#example?, #example_group?, #example_group_with_body?, #explicit_rspec?, #hook?, #include?, #let?, #rspec?, #shared_group?, #spec_group?, #subject?
Instance Method Details
#custom_matcher?(node) ⇒ Object
60 61 62 63 64 65 |
# File 'lib/rubocop/cop/rspec/instance_variable.rb', line 60 def_node_matcher :custom_matcher?, "(block {\n (send nil? :matcher sym)\n (send (const (const nil? :RSpec) :Matchers) :define sym)\n} ...)\n" |
#dynamic_class?(node) ⇒ Object
55 56 57 |
# File 'lib/rubocop/cop/rspec/instance_variable.rb', line 55 def_node_matcher :dynamic_class?, "(block (send (const nil? :Class) :new ...) ...)\n" |
#ivar_assigned?(node) ⇒ Object
71 |
# File 'lib/rubocop/cop/rspec/instance_variable.rb', line 71 def_node_search :ivar_assigned?, '(ivasgn % ...)' |
#ivar_usage(node) ⇒ Object
68 |
# File 'lib/rubocop/cop/rspec/instance_variable.rb', line 68 def_node_search :ivar_usage, '$(ivar $_)' |
#on_top_level_group(node) ⇒ Object
73 74 75 76 77 78 79 80 |
# File 'lib/rubocop/cop/rspec/instance_variable.rb', line 73 def on_top_level_group(node) ivar_usage(node) do |ivar, name| next if valid_usage?(ivar) next if assignment_only? && !ivar_assigned?(node, name) add_offense(ivar) end end |