Class: Codescout::FlogStats

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(analyzer) ⇒ FlogStats

Returns a new instance of FlogStats.



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/codescout/flog_stats.rb', line 8

def initialize(analyzer)
  options = {
    all:      true,
    methods:  true,
    continue: true,
    parser:   Ruby19Parser
  }

  @flog = Flog.new(options)
  @flog.flog(*analyzer.files)
  @flog.calculate

  @score         = @flog.total_score
  @average_score = @flog.average
  @scores        = {}

  @flog.mass.each_pair do |file, mass|
    @scores[file] = { score: 0, scores: [] }
  end

  @flog.totals.each_pair do |k,v|
    next if @flog.method_locations[k].nil?

    score = v.round
    class_name, method_name = parse_method_string(k)
    path, line = @flog.method_locations[k].split(":")
    code = nil

    if score >= 25 && method_name
      method_source = Codescout::SourceFile.new(File.read(path)).method_source(method_name)

      if method_source
        code = method_source.code
      end
    end

    @scores[path][:score] += score

    @scores[path][:scores] << {
      class_name:  class_name,
      method_name: method_name,
      score:       score,
      line:        line,
      code:        code
    }
  end

  @flog = nil
end

Instance Attribute Details

#average_scoreObject (readonly)

Returns the value of attribute average_score.



5
6
7
# File 'lib/codescout/flog_stats.rb', line 5

def average_score
  @average_score
end

#scoreObject (readonly)

Returns the value of attribute score.



5
6
7
# File 'lib/codescout/flog_stats.rb', line 5

def score
  @score
end

#scoresObject (readonly)

Returns the value of attribute scores.



6
7
8
# File 'lib/codescout/flog_stats.rb', line 6

def scores
  @scores
end