class DeepCover::Analyser::Branch

Constants

SUBSET_CLASSES

Public Class Methods

human_name() click to toggle source
# File lib/deep_cover/analyser/branch.rb, line 7
def self.human_name
  'Branches'
end

Public Instance Methods

node_runs(node) click to toggle source
Calls superclass method
# File lib/deep_cover/analyser/branch.rb, line 13
def node_runs(node)
  runs = super
  if node.is_a?(Node::Branch) && covered?(runs)
    worst = worst_branch_runs(node)
    runs = worst unless covered?(worst)
  end
  runs
end
results() click to toggle source
# File lib/deep_cover/analyser/branch.rb, line 22
def results
  each_node.map do |node|
    branches_runs = node.branches.map { |jump| [jump, branch_runs(jump)] }.to_h
    [node, branches_runs]
  end.to_h
end

Private Instance Methods

branch_runs(branch) click to toggle source
# File lib/deep_cover/analyser/branch.rb, line 36
def branch_runs(branch)
  branch.flow_entry_count.nonzero? || source.node_runs(branch)
end
worst_branch_runs(fork) click to toggle source
# File lib/deep_cover/analyser/branch.rb, line 31
def worst_branch_runs(fork)
  fork.branches.map { |jump| branch_runs(jump) }
      .min_by { |runs| runs == 0 ? -2 : runs || -1 }
end