churn 0.0.5 → 0.0.6
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.
- data/README.rdoc +62 -38
- data/Rakefile +2 -1
- data/VERSION +1 -1
- data/lib/churn/churn_calculator.rb +15 -14
- metadata +22 -2
data/README.rdoc
CHANGED
@@ -5,47 +5,71 @@ Over time the tool adds up the history of chruns to give the number of times a f
|
|
5
5
|
Churn for files is immediate, but classes and methods requires buildings up a history using churn between revisions. The history is stored in ./tmp
|
6
6
|
|
7
7
|
== Example Output
|
8
|
+
**********************************************************************
|
9
|
+
* Revision Changes
|
10
|
+
**********************************************************************
|
11
|
+
Files:
|
12
|
+
+-------------------------------+
|
13
|
+
| file |
|
14
|
+
+-------------------------------+
|
15
|
+
| Rakefile |
|
16
|
+
| lib/churn/churn_calculator.rb |
|
17
|
+
+-------------------------------+
|
18
|
+
|
19
|
+
Classes:
|
20
|
+
+-------------------------------+-----------------+
|
21
|
+
| file | klass |
|
22
|
+
+-------------------------------+-----------------+
|
23
|
+
| lib/churn/churn_calculator.rb | ChurnCalculator |
|
24
|
+
+-------------------------------+-----------------+
|
25
|
+
|
26
|
+
Methods:
|
27
|
+
+-------------------------------+-----------------+-------------------------------+
|
28
|
+
| file | klass | method |
|
29
|
+
+-------------------------------+-----------------+-------------------------------+
|
30
|
+
| lib/churn/churn_calculator.rb | ChurnCalculator | ChurnCalculator#filters |
|
31
|
+
| lib/churn/churn_calculator.rb | ChurnCalculator | ChurnCalculator#display_array |
|
32
|
+
| lib/churn/churn_calculator.rb | ChurnCalculator | ChurnCalculator#to_s |
|
33
|
+
+-------------------------------+-----------------+-------------------------------+
|
34
|
+
|
8
35
|
**********************************************************************
|
9
36
|
* Project Churn
|
10
37
|
**********************************************************************
|
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
|
-
* {"method"=>{"klass"=>"GitAnalyzer", "method"=>"GitAnalyzer#get_changed_range", "file"=>"lib/churn/git_analyzer.rb"}, "times_changed"=>1}
|
47
|
-
* {"method"=>{"klass"=>"ChurnCalculator", "method"=>"ChurnCalculator#parse_logs_for_updated_files", "file"=>"lib/churn/churn_calculator.rb"}, "times_changed"=>1}
|
48
|
-
* {"method"=>{"klass"=>"LocationMapping", "method"=>"LocationMapping#process_class", "file"=>"lib/churn/location_mapping.rb"}, "times_changed"=>1}
|
38
|
+
Files:
|
39
|
+
+------------------------------------+---------------+
|
40
|
+
| file_path | times_changed |
|
41
|
+
+------------------------------------+---------------+
|
42
|
+
| lib/churn/churn_calculator.rb | 14 |
|
43
|
+
| README.rdoc | 7 |
|
44
|
+
| lib/tasks/churn_tasks.rb | 6 |
|
45
|
+
| Rakefile | 6 |
|
46
|
+
| lib/churn/git_analyzer.rb | 4 |
|
47
|
+
| VERSION | 4 |
|
48
|
+
| test/test_helper.rb | 4 |
|
49
|
+
| test/unit/churn_calculator_test.rb | 3 |
|
50
|
+
| test/churn_test.rb | 3 |
|
51
|
+
+------------------------------------+---------------+
|
52
|
+
|
53
|
+
Classes:
|
54
|
+
+-------------------------------+-----------------+---------------+
|
55
|
+
| file | klass | times_changed |
|
56
|
+
+-------------------------------+-----------------+---------------+
|
57
|
+
| lib/churn/churn_calculator.rb | ChurnCalculator | 1 |
|
58
|
+
| lib/churn/churn_calculator.rb | ChurnCalculator | 1 |
|
59
|
+
+-------------------------------+-----------------+---------------+
|
60
|
+
|
61
|
+
Methods:
|
62
|
+
+-------------------------------+-----------------+-----------------------------------------+---------------+
|
63
|
+
| file | klass | method | times_changed |
|
64
|
+
+-------------------------------+-----------------+-----------------------------------------+---------------+
|
65
|
+
| lib/churn/churn_calculator.rb | ChurnCalculator | ChurnCalculator#to_s | 1 |
|
66
|
+
| lib/churn/churn_calculator.rb | ChurnCalculator | ChurnCalculator#display_array | 1 |
|
67
|
+
| lib/churn/churn_calculator.rb | ChurnCalculator | ChurnCalculator#calculate_revision_data | 1 |
|
68
|
+
| lib/churn/churn_calculator.rb | ChurnCalculator | ChurnCalculator#filters | 1 |
|
69
|
+
| lib/churn/churn_calculator.rb | ChurnCalculator | ChurnCalculator#initialize | 1 |
|
70
|
+
| lib/churn/churn_calculator.rb | ChurnCalculator | ChurnCalculator#filters | 1 |
|
71
|
+
| lib/churn/churn_calculator.rb | ChurnCalculator | ChurnCalculator#to_s | 1 |
|
72
|
+
+-------------------------------+-----------------+-----------------------------------------+---------------+
|
49
73
|
|
50
74
|
TODO:
|
51
75
|
* SVN only supports file
|
data/Rakefile
CHANGED
@@ -12,12 +12,13 @@ begin
|
|
12
12
|
gem.homepage = "http://github.com/danmayer/churn"
|
13
13
|
gem.authors = ["Dan Mayer"]
|
14
14
|
gem.add_development_dependency "thoughtbot-shoulda"
|
15
|
+
gem.add_development_dependency "devver-construct"
|
15
16
|
gem.add_dependency "main"
|
16
17
|
gem.add_dependency "json"
|
17
18
|
gem.add_dependency "chronic", '~> 0.2.3'
|
18
19
|
gem.add_dependency "sexp_processor", '~> 3.0.3'
|
19
20
|
gem.add_dependency "ruby_parser", '~> 2.0.4'
|
20
|
-
|
21
|
+
gem.add_dependency 'hirb'
|
21
22
|
gem.executables = ['churn']
|
22
23
|
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
23
24
|
end
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.6
|
@@ -2,6 +2,7 @@ require 'chronic'
|
|
2
2
|
require 'sexp_processor'
|
3
3
|
require 'ruby_parser'
|
4
4
|
require 'json'
|
5
|
+
require 'hirb'
|
5
6
|
require 'fileutils'
|
6
7
|
|
7
8
|
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
@@ -69,21 +70,23 @@ module Churn
|
|
69
70
|
result = seperator
|
70
71
|
result +="* Revision Changes \n"
|
71
72
|
result += seperator
|
72
|
-
result += "
|
73
|
-
result += display_array(hash[:churn][:changed_files])
|
74
|
-
result += "\
|
73
|
+
result += "Files: \n"
|
74
|
+
result += display_array(hash[:churn][:changed_files], :fields=>[:to_str], :headers=>{:to_str=>'file'})
|
75
|
+
result += "\nClasses: \n"
|
75
76
|
result += display_array(hash[:churn][:changed_classes])
|
76
|
-
result += "\
|
77
|
-
result += display_array(hash[:churn][:changed_methods])
|
77
|
+
result += "\nMethods: \n"
|
78
|
+
result += display_array(hash[:churn][:changed_methods]) + "\n"
|
78
79
|
result += seperator
|
79
80
|
result +="* Project Churn \n"
|
80
81
|
result += seperator
|
81
|
-
result += "
|
82
|
+
result += "Files: \n"
|
82
83
|
result += display_array(hash[:churn][:changes])
|
83
|
-
result += "\
|
84
|
-
|
85
|
-
result +=
|
86
|
-
result +=
|
84
|
+
result += "\nClasses: \n"
|
85
|
+
class_churn = hash[:churn][:class_churn].map {|e| (e.delete('klass') || {}).merge(e) }
|
86
|
+
result += display_array(class_churn)
|
87
|
+
result += "\nMethods: \n"
|
88
|
+
method_churn = hash[:churn][:method_churn].map {|e| (e.delete('method') || {}).merge(e) }
|
89
|
+
result += display_array(method_churn)
|
87
90
|
end
|
88
91
|
|
89
92
|
private
|
@@ -92,10 +95,8 @@ module Churn
|
|
92
95
|
/.*\.rb/
|
93
96
|
end
|
94
97
|
|
95
|
-
def display_array(array)
|
96
|
-
|
97
|
-
array.each { |element| result += " * #{element.inspect}\n" } if array
|
98
|
-
result
|
98
|
+
def display_array(array, options={})
|
99
|
+
array ? Hirb::Helpers::AutoTable.render(array, options.merge(:description=>false)) + "\n" : ''
|
99
100
|
end
|
100
101
|
|
101
102
|
def seperator
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: churn
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dan Mayer
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2010-01-
|
12
|
+
date: 2010-01-14 00:00:00 -05:00
|
13
13
|
default_executable: churn
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -22,6 +22,16 @@ dependencies:
|
|
22
22
|
- !ruby/object:Gem::Version
|
23
23
|
version: "0"
|
24
24
|
version:
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: devver-construct
|
27
|
+
type: :development
|
28
|
+
version_requirement:
|
29
|
+
version_requirements: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: "0"
|
34
|
+
version:
|
25
35
|
- !ruby/object:Gem::Dependency
|
26
36
|
name: main
|
27
37
|
type: :runtime
|
@@ -72,6 +82,16 @@ dependencies:
|
|
72
82
|
- !ruby/object:Gem::Version
|
73
83
|
version: 2.0.4
|
74
84
|
version:
|
85
|
+
- !ruby/object:Gem::Dependency
|
86
|
+
name: hirb
|
87
|
+
type: :runtime
|
88
|
+
version_requirement:
|
89
|
+
version_requirements: !ruby/object:Gem::Requirement
|
90
|
+
requirements:
|
91
|
+
- - ">="
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: "0"
|
94
|
+
version:
|
75
95
|
description: "High method and class churn has been shown to have increased bug and error rates. This gem helps you know what is changing a lot so you can do additional testing, code review, or refactoring to try to tame the volatile code. "
|
76
96
|
email: dan@devver.net
|
77
97
|
executables:
|