Class: CodeMetrics::LineStatistics

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

Instance Method Summary collapse

Constructor Details

#initialize(files) ⇒ LineStatistics

e.g. FileList[“lib/active_record/*/.rb”]

Parameters:

  • files (Array, FileList, Enumerable)


6
7
8
# File 'lib/code_metrics/line_statistics.rb', line 6

def initialize(files)
  @files = Array(files).compact
end

Instance Method Details

Calculates LOC for each file Outputs each file and a total LOC



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/code_metrics/line_statistics.rb', line 12

def print_loc
  lines, codelines, total_lines, total_codelines = 0, 0, 0, 0

  @files.each do |file_name|
    next if file_name =~ /vendor/
    File.open(file_name, 'r') do |f|
      while line = f.gets
        lines += 1
        next if line =~ /^\s*$/
        next if line =~ /^\s*#/
        codelines += 1
      end
    end
    puts "L: #{sprintf("%4d", lines)}, LOC #{sprintf("%4d", codelines)} | #{file_name}"

    total_lines     += lines
    total_codelines += codelines

    lines, codelines = 0, 0
  end

  puts "Total: Lines #{total_lines}, LOC #{total_codelines}"
end