rails_code_stats 0.0.1 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. metadata +3 -4
  2. data/lib/code_statistics.rb +0 -107
metadata CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
6
  - 0
7
- - 0
8
7
  - 1
9
- version: 0.0.1
8
+ - 0
9
+ version: 0.1.0
10
10
  platform: ruby
11
11
  authors:
12
12
  - Nathan Humbert
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-03-17 00:00:00 -07:00
17
+ date: 2010-03-19 00:00:00 -07:00
18
18
  default_executable:
19
19
  dependencies: []
20
20
 
@@ -33,7 +33,6 @@ files:
33
33
  - lib/tasks/rails_code_stats.rake
34
34
  - lib/rails_code_stats/railtie.rb
35
35
  - lib/rails_code_stats.rb
36
- - lib/code_statistics.rb
37
36
  - lib/command_line_metric_output.rb
38
37
  - lib/directory_source_stats.rb
39
38
  - lib/rails_app_source_metrics.rb
@@ -1,107 +0,0 @@
1
- class CodeStatistics #:nodoc:
2
-
3
- TEST_TYPES = %w(Units Functionals Unit\ tests Functional\ tests Integration\ tests)
4
-
5
- def initialize(*pairs)
6
- @pairs = pairs
7
- @statistics = calculate_statistics
8
- @total = calculate_total if pairs.length > 1
9
- end
10
-
11
- def to_s
12
- print_header
13
- @pairs.each { |pair| print_line(pair.first, @statistics[pair.first]) }
14
- print_splitter
15
-
16
- if @total
17
- print_line("Total", @total)
18
- print_splitter
19
- end
20
-
21
- print_code_test_stats
22
- end
23
-
24
- private
25
- def calculate_statistics
26
- @pairs.inject({}) { |stats, pair| stats[pair.first] = calculate_directory_statistics(pair.last); stats }
27
- end
28
-
29
- def calculate_directory_statistics(directory, pattern = /.*\.rb$/)
30
- stats = { "lines" => 0, "codelines" => 0, "classes" => 0, "methods" => 0 }
31
-
32
- Dir.foreach(directory) do |file_name|
33
- if File.stat(directory + "/" + file_name).directory? and (/^\./ !~ file_name)
34
- newstats = calculate_directory_statistics(directory + "/" + file_name, pattern)
35
- stats.each { |k, v| stats[k] += newstats[k] }
36
- end
37
-
38
- next unless file_name =~ pattern
39
-
40
- f = File.open(directory + "/" + file_name)
41
-
42
- while line = f.gets
43
- stats["lines"] += 1
44
- stats["classes"] += 1 if line =~ /class [A-Z]/
45
- stats["methods"] += 1 if line =~ /def [a-z]/
46
- stats["codelines"] += 1 unless line =~ /^\s*$/ || line =~ /^\s*#/
47
- end
48
- end
49
-
50
- stats
51
- end
52
-
53
- def calculate_total
54
- total = { "lines" => 0, "codelines" => 0, "classes" => 0, "methods" => 0 }
55
- @statistics.each_value { |pair| pair.each { |k, v| total[k] += v } }
56
- total
57
- end
58
-
59
- def calculate_code
60
- code_loc = 0
61
- @statistics.each { |k, v| code_loc += v['codelines'] unless TEST_TYPES.include? k }
62
- code_loc
63
- end
64
-
65
- def calculate_tests
66
- test_loc = 0
67
- @statistics.each { |k, v| test_loc += v['codelines'] if TEST_TYPES.include? k }
68
- test_loc
69
- end
70
-
71
- def print_header
72
- print_splitter
73
- puts "| Name | Lines | LOC | Classes | Methods | M/C | LOC/M |"
74
- print_splitter
75
- end
76
-
77
- def print_splitter
78
- puts "+----------------------+-------+-------+---------+---------+-----+-------+"
79
- end
80
-
81
- def print_line(name, statistics)
82
- m_over_c = (statistics["methods"] / statistics["classes"]) rescue m_over_c = 0
83
- loc_over_m = (statistics["codelines"] / statistics["methods"]) - 2 rescue loc_over_m = 0
84
-
85
- start = if TEST_TYPES.include? name
86
- "| #{name.ljust(20)} "
87
- else
88
- "| #{name.ljust(20)} "
89
- end
90
-
91
- puts start +
92
- "| #{statistics["lines"].to_s.rjust(5)} " +
93
- "| #{statistics["codelines"].to_s.rjust(5)} " +
94
- "| #{statistics["classes"].to_s.rjust(7)} " +
95
- "| #{statistics["methods"].to_s.rjust(7)} " +
96
- "| #{m_over_c.to_s.rjust(3)} " +
97
- "| #{loc_over_m.to_s.rjust(5)} |"
98
- end
99
-
100
- def print_code_test_stats
101
- code = calculate_code
102
- tests = calculate_tests
103
-
104
- puts " Code LOC: #{code} Test LOC: #{tests} Code to Test Ratio: 1:#{sprintf("%.1f", tests.to_f/code)}"
105
- puts ""
106
- end
107
- end