Class: RuboCop::Cop::Chef::ChefModernize::DefaultActionFromInitialize
- Inherits:
-
RuboCop::Cop
- Object
- RuboCop::Cop
- RuboCop::Cop::Chef::ChefModernize::DefaultActionFromInitialize
- Includes:
- RangeHelp
- Defined in:
- lib/rubocop/cop/chef/modernize/default_action_initializer.rb
Overview
The default actions can now be specified using the ‘default_action` helper instead of using the @action variable in the resource provider initialize method. In general we recommend against writing HWRPs, but if HWRPs are necessary you should utilize as much of the resource DSL as possible.
# good
default_action :create
Constant Summary collapse
- MSG =
'The default action of a resource can be set with the "default_action" helper instead of using the initialize method.'.freeze
Instance Method Summary collapse
Instance Method Details
#autocorrect(node) ⇒ Object
54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/rubocop/cop/chef/modernize/default_action_initializer.rb', line 54 def autocorrect(node) lambda do |corrector| # insert the new default_action call above the initialize method, but not if one already exists (this is sadly common) unless default_action_method?(processed_source.ast) initialize_node = intialize_method(processed_source.ast).first corrector.insert_before(initialize_node.source_range, "default_action #{node.descendants.first.source}\n\n") end # remove the variable from the initialize method corrector.remove(range_with_surrounding_space(range: node.loc.expression, side: :left)) end end |
#on_def(node) ⇒ Object
39 40 41 42 43 44 45 46 47 48 |
# File 'lib/rubocop/cop/chef/modernize/default_action_initializer.rb', line 39 def on_def(node) return unless node.method_name == :initialize return if node.body.nil? # nil body is an empty initialize method node.body.each_node do |x| if x.assignment? && !x.node_parts.empty? && x.node_parts.first == :@action add_offense(x, location: :expression, message: MSG, severity: :refactor) end end end |