code_metrics 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/lib/code_metrics.rb CHANGED
@@ -1,7 +1,6 @@
1
1
  module CodeMetrics
2
2
  require 'code_metrics/version'
3
3
  require 'code_metrics/statistics'
4
- $VERBOSE = nil
5
4
  if defined?(Rails)
6
5
  require 'code_metrics/railtie'
7
6
  else
@@ -0,0 +1,37 @@
1
+ module CodeMetrics
2
+ class LineStatistics
3
+
4
+ # @param files [Array, FileList, Enumerable]
5
+ # e.g. FileList["lib/active_record/**/*.rb"]
6
+ def initialize(files)
7
+ @files = Array(files).compact
8
+ end
9
+
10
+ # Calculates LOC for each file
11
+ # Outputs each file and a total LOC
12
+ def print_loc
13
+ lines, codelines, total_lines, total_codelines = 0, 0, 0, 0
14
+
15
+ @files.each do |file_name|
16
+ next if file_name =~ /vendor/
17
+ File.open(file_name, 'r') do |f|
18
+ while line = f.gets
19
+ lines += 1
20
+ next if line =~ /^\s*$/
21
+ next if line =~ /^\s*#/
22
+ codelines += 1
23
+ end
24
+ end
25
+ puts "L: #{sprintf("%4d", lines)}, LOC #{sprintf("%4d", codelines)} | #{file_name}"
26
+
27
+ total_lines += lines
28
+ total_codelines += codelines
29
+
30
+ lines, codelines = 0, 0
31
+ end
32
+
33
+ puts "Total: Lines #{total_lines}, LOC #{total_codelines}"
34
+ end
35
+
36
+ end
37
+ end
@@ -1,7 +1,7 @@
1
1
  require 'code_metrics/statistics_calculator'
2
2
  require 'code_metrics/stats_directories'
3
3
 
4
- module CodeMetrics #:nodoc:
4
+ module CodeMetrics
5
5
  class Statistics
6
6
 
7
7
  TEST_TYPES = ['Controller tests',
@@ -1,3 +1,3 @@
1
1
  module CodeMetrics
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -8,6 +8,17 @@ begin
8
8
  STATS_DIRECTORIES = CodeMetrics::StatsDirectories.new.directories
9
9
  CodeMetrics::Statistics.new(*STATS_DIRECTORIES).to_s
10
10
  end
11
+
12
+ desc "Report LOC for each file, and a total LOC for the list of files. \bUsage rake code_metrics:line_statistics['lib/**/*.rb']"
13
+ task :line_statistics, :file_pattern do |t, args|
14
+ file_pattern = args[:file_pattern].to_s
15
+ raise "No file pattern entered, e.g. :line_statistics['lib/**/*.rb']" if file_pattern.size == 0
16
+
17
+ require 'code_metrics/line_statistics'
18
+ files = FileList[file_pattern]
19
+ CodeMetrics::LineStatistics.new(files).print_loc
20
+ end
21
+
11
22
  end
12
23
  rescue LoadError
13
24
  STDERR.puts "Cannot load rake code_metrics:stats task, rake not available"
@@ -33,4 +33,8 @@ Dummy::Application.configure do
33
33
 
34
34
  # Print deprecation notices to the stderr.
35
35
  config.active_support.deprecation = :stderr
36
+
37
+ config.log_level = :fatal
38
+ config.logger = Logger.new("/dev/null")
39
+
36
40
  end
data/test/rake_test.rb CHANGED
@@ -4,12 +4,20 @@ require 'code_metrics/railtie'
4
4
 
5
5
  module CodeMetrics
6
6
  class RakeTest < ActiveSupport::TestCase
7
+
7
8
  def test_code_metrics_sanity
8
9
  assert_match "Code LOC: 5 Test LOC: 0 Code to Test Ratio: 1:0.0",
9
10
  Dir.chdir(app_path){ `rake code_metrics:stats` }
10
11
  end
12
+
13
+ def test_line_metrics_sanity
14
+ assert_match "L: 5, LOC 3 | app/controllers/application_controller.rb\nTotal: Lines 5, LOC 3",
15
+ Dir.chdir(app_path){ `rake code_metrics:line_statistics['app/controllers/application_controller.rb']` }
16
+ end
17
+
11
18
  def app_path
12
19
  File.expand_path('../dummy', __FILE__)
13
20
  end
21
+
14
22
  end
15
23
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: code_metrics
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-07-03 00:00:00.000000000 Z
12
+ date: 2013-07-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -58,6 +58,7 @@ executables:
58
58
  extensions: []
59
59
  extra_rdoc_files: []
60
60
  files:
61
+ - lib/code_metrics/line_statistics.rb
61
62
  - lib/code_metrics/profiler.rb
62
63
  - lib/code_metrics/railtie.rb
63
64
  - lib/code_metrics/statistics.rb