Class: RiskAnalyzer

Inherits:
Object
  • Object
show all
Defined in:
lib/risk_analyzer.rb

Instance Method Summary collapse

Instance Method Details

#analyze(file_manager, commit) ⇒ Object

TODO: Add config to match test files



7
8
9
10
11
12
13
14
15
16
17
# File 'lib/risk_analyzer.rb', line 7

def analyze(file_manager, commit)
  return if commit.nil?

  files = files_for_diff(commit.file_diffs, file_manager)

  CommitStats.link_mutations!(files, commit.changes, :change)
  CommitStats.link_mutations!(files, commit.movements, :movement)
  line_diffs = CommitStats.link_diffs!(files, commit.file_diffs)

  score(line_diffs)
end

#score(line_diffs) ⇒ Object

TODO: Maybe include function score per line.



20
21
22
23
24
25
26
27
28
# File 'lib/risk_analyzer.rb', line 20

def score(line_diffs)
  (line_diffs[:insertions] + line_diffs[:deletions])
    .reduce(0) do |acc, line|
      penalty = Line.relevant_change?(line) ? Line.score(line) : 0
      penalty /= 3 if line.has_key?(:movement)
      acc += penalty
      acc
    end
end