churn 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +50 -2
- data/Rakefile +2 -1
- data/VERSION +1 -1
- data/bin/churn +13 -4
- metadata +13 -2
data/README.rdoc
CHANGED
@@ -1,7 +1,51 @@
|
|
1
1
|
= churn
|
2
2
|
|
3
3
|
A Project to give the churn file, class, and method for a project for a given checkin
|
4
|
-
|
4
|
+
Over time the tool adds up the history of chruns to give the number of times a file, class, or method is changing during the life of a project.
|
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
|
+
|
7
|
+
== Example Output
|
8
|
+
**********************************************************************
|
9
|
+
* Project Churn
|
10
|
+
**********************************************************************
|
11
|
+
files:
|
12
|
+
* {:file_path=>"lib/churn/churn_calculator.rb", :times_changed=>11}
|
13
|
+
* {:file_path=>"README.rdoc", :times_changed=>6}
|
14
|
+
* {:file_path=>"lib/tasks/churn_tasks.rb", :times_changed=>6}
|
15
|
+
* {:file_path=>"Rakefile", :times_changed=>4}
|
16
|
+
* {:file_path=>"lib/churn/git_analyzer.rb", :times_changed=>4}
|
17
|
+
* {:file_path=>"test/test_helper.rb", :times_changed=>4}
|
18
|
+
* {:file_path=>"test/unit/churn_calculator_test.rb", :times_changed=>3}
|
19
|
+
* {:file_path=>"test/churn_test.rb", :times_changed=>3}
|
20
|
+
* {:file_path=>"VERSION", :times_changed=>3}
|
21
|
+
|
22
|
+
classes:
|
23
|
+
* {"klass"=>{"klass"=>"ChurnCalculator", "file"=>"lib/churn/churn_calculator.rb"}, "times_changed"=>7}
|
24
|
+
* {"klass"=>{"klass"=>"LocationMapping", "file"=>"lib/churn/location_mapping.rb"}, "times_changed"=>1}
|
25
|
+
* {"klass"=>{"klass"=>"GitAnalyzer", "file"=>"lib/churn/git_analyzer.rb"}, "times_changed"=>1}
|
26
|
+
* {"klass"=>{"klass"=>"ChurnTest", "file"=>"test/churn_test.rb"}, "times_changed"=>1}
|
27
|
+
* {"klass"=>{"klass"=>"ChurnCalculatorTest", "file"=>"test/unit/churn_calculator_test.rb"}, "times_changed"=>1}
|
28
|
+
|
29
|
+
methods:
|
30
|
+
* {"method"=>{"klass"=>"ChurnCalculator", "method"=>"ChurnCalculator#to_h", "file"=>"lib/churn/churn_calculator.rb"}, "times_changed"=>3}
|
31
|
+
* {"method"=>{"klass"=>"ChurnCalculator", "method"=>"ChurnCalculator#analyze", "file"=>"lib/churn/churn_calculator.rb"}, "times_changed"=>2}
|
32
|
+
* {"method"=>{"klass"=>"ChurnCalculator", "method"=>"ChurnCalculator#report", "file"=>"lib/churn/churn_calculator.rb"}, "times_changed"=>2}
|
33
|
+
* {"method"=>{"klass"=>"ChurnCalculator", "method"=>"ChurnCalculator#calculate_changes!", "file"=>"lib/churn/churn_calculator.rb"}, "times_changed"=>1}
|
34
|
+
* {"method"=>{"klass"=>"ChurnCalculator", "method"=>"ChurnCalculator#display_array", "file"=>"lib/churn/churn_calculator.rb"}, "times_changed"=>1}
|
35
|
+
* {"method"=>{"klass"=>"ChurnCalculator", "method"=>"ChurnCalculator#calculate_revision_changes", "file"=>"lib/churn/churn_calculator.rb"}, "times_changed"=>1}
|
36
|
+
* {"method"=>{"klass"=>"ChurnCalculator", "method"=>"ChurnCalculator#initialize", "file"=>"lib/churn/churn_calculator.rb"}, "times_changed"=>1}
|
37
|
+
* {"method"=>{"klass"=>"ChurnCalculator", "method"=>"ChurnCalculator#set_source_control", "file"=>"lib/churn/churn_calculator.rb"}, "times_changed"=>1}
|
38
|
+
* {"method"=>{"klass"=>"ChurnCalculator", "method"=>"ChurnCalculator#get_changes", "file"=>"lib/churn/churn_calculator.rb"}, "times_changed"=>1}
|
39
|
+
* {"method"=>{"klass"=>"ChurnCalculator", "method"=>"ChurnCalculator#calculate_revision_data", "file"=>"lib/churn/churn_calculator.rb"}, "times_changed"=>1}
|
40
|
+
* {"method"=>{"klass"=>"ChurnCalculator", "method"=>"ChurnCalculator#emit", "file"=>"lib/churn/churn_calculator.rb"}, "times_changed"=>1}
|
41
|
+
* {"method"=>{"klass"=>"GitAnalyzer", "method"=>"GitAnalyzer#date_range", "file"=>"lib/churn/git_analyzer.rb"}, "times_changed"=>1}
|
42
|
+
* {"method"=>{"klass"=>"", "method"=>"#report_churn", "file"=>"lib/tasks/churn_tasks.rb"}, "times_changed"=>1}
|
43
|
+
* {"method"=>{"klass"=>"ChurnCalculator", "method"=>"ChurnCalculator#get_klass_for", "file"=>"lib/churn/churn_calculator.rb"}, "times_changed"=>1}
|
44
|
+
* {"method"=>{"klass"=>"GitAnalyzer", "method"=>"GitAnalyzer#get_recent_file", "file"=>"lib/churn/git_analyzer.rb"}, "times_changed"=>1}
|
45
|
+
* {"method"=>{"klass"=>"GitAnalyzer", "method"=>"GitAnalyzer#get_updated_files_change_info", "file"=>"lib/churn/git_analyzer.rb"}, "times_changed"=>1}
|
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}
|
5
49
|
|
6
50
|
TODO:
|
7
51
|
* SVN only supports file
|
@@ -9,7 +53,11 @@ TODO:
|
|
9
53
|
* allow passing in directories to churn, directories to ignore
|
10
54
|
* todo add a filter that allows for other files besides. *.rb
|
11
55
|
|
12
|
-
Usage:
|
56
|
+
Executable Usage:
|
57
|
+
* 'gem install churn'
|
58
|
+
* go to project root run 'churn'
|
59
|
+
|
60
|
+
Rake Usage:
|
13
61
|
* 'gem install churn'
|
14
62
|
* on any project you want to use churn, add "require 'churn'" to your rake file
|
15
63
|
* run 'rake churn' to view the current output, file churn history is immediate, class and method churn builds up a history as it is run on each revision
|
data/Rakefile
CHANGED
@@ -12,7 +12,8 @@ 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.
|
15
|
+
gem.add_dependency "main"
|
16
|
+
gem.add_dependency "json"
|
16
17
|
gem.executables = ['churn']
|
17
18
|
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
18
19
|
end
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.4
|
data/bin/churn
CHANGED
@@ -4,18 +4,27 @@ require 'main'
|
|
4
4
|
#example usage. In the root of a project 'churn', or 'churn --help'
|
5
5
|
Main do
|
6
6
|
option('minimum_churn_count', 'c') do
|
7
|
-
|
7
|
+
argument :required
|
8
8
|
cast :int
|
9
9
|
default 3
|
10
10
|
end
|
11
11
|
|
12
|
-
|
12
|
+
option('yaml', 'y') do
|
13
|
+
cast :boolean
|
14
|
+
default false
|
15
|
+
end
|
16
|
+
|
17
|
+
def report_churn(output_string)
|
13
18
|
require File.join(File.dirname(__FILE__), '..', 'lib', 'churn', 'churn_calculator')
|
14
|
-
Churn::ChurnCalculator.new({:minimum_churn_count => params['minimum_churn_count'].value}).report
|
19
|
+
result = Churn::ChurnCalculator.new({:minimum_churn_count => params['minimum_churn_count'].value}).report(output_string)
|
20
|
+
unless output_string
|
21
|
+
result = YAML::dump(result)
|
22
|
+
end
|
23
|
+
result
|
15
24
|
end
|
16
25
|
|
17
26
|
def run
|
18
|
-
report = report_churn
|
27
|
+
report = report_churn(!params['yaml'].value)
|
19
28
|
puts report
|
20
29
|
end
|
21
30
|
|
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.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dan Mayer
|
@@ -24,7 +24,17 @@ dependencies:
|
|
24
24
|
version:
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: main
|
27
|
-
type: :
|
27
|
+
type: :runtime
|
28
|
+
version_requirement:
|
29
|
+
version_requirements: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: "0"
|
34
|
+
version:
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: json
|
37
|
+
type: :runtime
|
28
38
|
version_requirement:
|
29
39
|
version_requirements: !ruby/object:Gem::Requirement
|
30
40
|
requirements:
|
@@ -48,6 +58,7 @@ files:
|
|
48
58
|
- README.rdoc
|
49
59
|
- Rakefile
|
50
60
|
- VERSION
|
61
|
+
- bin/churn
|
51
62
|
- lib/churn.rb
|
52
63
|
- lib/churn/churn_calculator.rb
|
53
64
|
- lib/churn/churn_history.rb
|