Class: RuboCop::Cop::Chef::Modernize::AllowedActionsFromInitialize
- Extended by:
- AutoCorrector
- Includes:
- RangeHelp
- Defined in:
- lib/rubocop/cop/chef/modernize/allowed_actions_initializer.rb
Overview
The allowed actions can now be specified using the ‘allowed_actions` helper instead of using the @actions or @allowed_actions variables in the resource’s 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.
Constant Summary collapse
- MSG =
'The allowed actions of a resource can be set with the "allowed_actions" helper instead of using the initialize method.'
Instance Method Summary collapse
Methods inherited from Base
Instance Method Details
#on_def(node) ⇒ Object
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/rubocop/cop/chef/modernize/allowed_actions_initializer.rb', line 47 def on_def(node) return unless node.method?(:initialize) return if node.body.nil? # nil body is an empty initialize method node.body.each_node do |x| next unless x.assignment? && !x.parent.op_asgn_type? && !x.node_parts.empty? && %i(@actions @allowed_actions).include?(x.node_parts.first) add_offense(x, severity: :refactor) do |corrector| # insert the new allowed_actions call above the initialize method, but not if one already exists (this is sadly common) unless action_methods?(processed_source.ast) initialize_node = initialize_method(processed_source.ast).first corrector.insert_before(initialize_node.source_range, "allowed_actions #{x.descendants.first.source}\n\n") end # remove the variable from the initialize method corrector.remove(range_with_surrounding_space(range: x.loc.expression, side: :left)) end end end |