Class: Contrast::Utils::StackTraceUtils

Inherits:
Object
  • Object
show all
Defined in:
lib/contrast/utils/stack_trace_utils.rb

Overview

Utilities for converting ruby stack trace into DTMs

Constant Summary collapse

AGENT_CLASS_MARKER =

need lib here to separate from specs

'/lib/contrast/'

Class Method Summary collapse

Class Method Details

.build_protect_report_stack_arrayArray<Contrast::Agent::Reporting::ApplicationDefendAttackSampleStack>

Call and translate a caller_locations array to an array of ApplicationDefendAttackSampleStack for TeamServer to display, excluding any Contrast code found.



39
40
41
# File 'lib/contrast/utils/stack_trace_utils.rb', line 39

def build_protect_report_stack_array
  build_protect_stack(Contrast::Agent::Reporting::ApplicationDefendAttackSampleStack)
end

.custom_code_context?Boolean

Determine if this method is being invoked by application code or not based on the immediate caller of the code after Contrast.

Returns:

  • (Boolean)

    true if this code is called with application (non-gem) code in the caller



20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/contrast/utils/stack_trace_utils.rb', line 20

def custom_code_context?
  root_dir = Contrast::Agent.framework_manager.app_root

  stack = Kernel.caller(0, 15)
  i = 0
  while i < stack.length
    stack_element = stack[i]
    i += 1
    next if stack_element.include?('/contrast/')

    return stack_element.start_with?(root_dir)
  end
end