Class: RuboCop::Cop::Chef::ChefCorrectness::NodeNormalUnless

Inherits:
RuboCop::Cop
  • Object
show all
Defined in:
lib/rubocop/cop/chef/correctness/node_normal_unless.rb

Overview

Normal attributes are discouraged since their semantics differ importantly from the default and override levels. Their values persist in the node object even after all code referencing them has been deleted, unlike default and override.

Code should be updated to use default or override levels, but this will change attribute merging behavior so needs to be validated manually and force_default or force_override levels may need to be used in recipe code.

Examples:


# bad
node.normal_unless['foo'] = true

# good
node.default_unless['foo'] = true
node.override_unless['foo'] = true
node.force_default_unless['foo'] = true
node.force_override_unless['foo'] = true

Constant Summary collapse

MSG =
'Do not use node.normal_unless. Replace with default/override/force_default/force_override attribute levels.'.freeze

Instance Method Summary collapse

Instance Method Details

#on_send(node) ⇒ Object



46
47
48
49
50
# File 'lib/rubocop/cop/chef/correctness/node_normal_unless.rb', line 46

def on_send(node)
  node_normal_unless?(node) do
    add_offense(node, location: :expression, message: MSG, severity: :refactor)
  end
end