Class: Contrast::Agent::Assess::PreShift
- Extended by:
- Components::Logger::InstanceMethods
- Includes:
- Components::Logger::InstanceMethods
- Defined in:
- lib/contrast/agent/assess/policy/preshift.rb,
ext/cs__contrast_patch/cs__contrast_patch.c
Overview
In order to properly shift tags to account for the changes this method caused, we’ll need to store the state before the change occurred.
Constant Summary collapse
- UNDUPLICABLE_MODULES =
rubocop: disable Style/MutableConstant
[ # rubocop: disable Style/MutableConstant Enumerator # dup'ing results in 'can't copy execution context' ]
Instance Attribute Summary collapse
-
#arg_lengths ⇒ Object
Returns the value of attribute arg_lengths.
-
#args ⇒ Object
Returns the value of attribute args.
-
#object ⇒ Object
Returns the value of attribute object.
-
#object_length ⇒ Object
Returns the value of attribute object_length.
Class Method Summary collapse
-
.build_preshift(propagation_node, object, args) ⇒ Contrast::Agent::Assess::PreShift?
Save the state before we do the propagation.
Methods included from Components::Logger::InstanceMethods
Instance Attribute Details
#arg_lengths ⇒ Object
Returns the value of attribute arg_lengths.
24 25 26 |
# File 'lib/contrast/agent/assess/policy/preshift.rb', line 24 def arg_lengths @arg_lengths end |
#args ⇒ Object
Returns the value of attribute args.
24 25 26 |
# File 'lib/contrast/agent/assess/policy/preshift.rb', line 24 def args @args end |
#object ⇒ Object
Returns the value of attribute object.
24 25 26 |
# File 'lib/contrast/agent/assess/policy/preshift.rb', line 24 def object @object end |
#object_length ⇒ Object
Returns the value of attribute object_length.
24 25 26 |
# File 'lib/contrast/agent/assess/policy/preshift.rb', line 24 def object_length @object_length end |
Class Method Details
.build_preshift(propagation_node, object, args) ⇒ Contrast::Agent::Assess::PreShift?
Save the state before we do the propagation. This is one of the few things that we’ll call BEFORE calling the original method. Unfortunately, we may waste some time here if the method then throws an exception, but hey, it threw an exception. These few extra objects aren’t the real problem in that case.
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/contrast/agent/assess/policy/preshift.rb', line 43 def build_preshift propagation_node, object, args return unless propagation_node return unless ::Contrast::ASSESS.enabled? # don't do preshift just use the original object return if propagation_node.use_original_object? initializing = propagation_node.method_name == :initialize return if unsafe_io_object?(object, initializing) needs_object = propagation_node.needs_object? needs_args = propagation_node.needs_args? preshift = Contrast::Agent::Assess::PreShift.new append_object_details(preshift, initializing, object) if needs_object append_arg_details(preshift, args) if needs_args preshift rescue StandardError => e logger.error('Unable to build preshift for method.', e) nil end |