rferraz-metric_fu 2.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (120) hide show
  1. data/HISTORY +237 -0
  2. data/MIT-LICENSE +22 -0
  3. data/README +29 -0
  4. data/Rakefile +18 -0
  5. data/TODO +6 -0
  6. data/lib/base/base_template.rb +172 -0
  7. data/lib/base/churn_analyzer.rb +38 -0
  8. data/lib/base/code_issue.rb +97 -0
  9. data/lib/base/configuration.rb +199 -0
  10. data/lib/base/flay_analyzer.rb +50 -0
  11. data/lib/base/flog_analyzer.rb +43 -0
  12. data/lib/base/generator.rb +166 -0
  13. data/lib/base/graph.rb +44 -0
  14. data/lib/base/line_numbers.rb +74 -0
  15. data/lib/base/location.rb +85 -0
  16. data/lib/base/md5_tracker.rb +52 -0
  17. data/lib/base/metric_analyzer.rb +404 -0
  18. data/lib/base/ranking.rb +34 -0
  19. data/lib/base/rcov_analyzer.rb +43 -0
  20. data/lib/base/reek_analyzer.rb +163 -0
  21. data/lib/base/report.rb +108 -0
  22. data/lib/base/roodi_analyzer.rb +37 -0
  23. data/lib/base/saikuro_analyzer.rb +48 -0
  24. data/lib/base/scoring_strategies.rb +29 -0
  25. data/lib/base/stats_analyzer.rb +37 -0
  26. data/lib/base/table.rb +102 -0
  27. data/lib/generators/churn.rb +28 -0
  28. data/lib/generators/flay.rb +31 -0
  29. data/lib/generators/flog.rb +111 -0
  30. data/lib/generators/hotspots.rb +52 -0
  31. data/lib/generators/rails_best_practices.rb +53 -0
  32. data/lib/generators/rcov.rb +122 -0
  33. data/lib/generators/reek.rb +81 -0
  34. data/lib/generators/roodi.rb +35 -0
  35. data/lib/generators/saikuro.rb +256 -0
  36. data/lib/generators/stats.rb +58 -0
  37. data/lib/graphs/engines/bluff.rb +113 -0
  38. data/lib/graphs/engines/gchart.rb +157 -0
  39. data/lib/graphs/flay_grapher.rb +18 -0
  40. data/lib/graphs/flog_grapher.rb +57 -0
  41. data/lib/graphs/grapher.rb +11 -0
  42. data/lib/graphs/rails_best_practices_grapher.rb +19 -0
  43. data/lib/graphs/rcov_grapher.rb +18 -0
  44. data/lib/graphs/reek_grapher.rb +30 -0
  45. data/lib/graphs/roodi_grapher.rb +18 -0
  46. data/lib/graphs/stats_grapher.rb +20 -0
  47. data/lib/metric_fu.rb +40 -0
  48. data/lib/templates/awesome/awesome_template.rb +73 -0
  49. data/lib/templates/awesome/churn.html.erb +58 -0
  50. data/lib/templates/awesome/css/buttons.css +82 -0
  51. data/lib/templates/awesome/css/default.css +91 -0
  52. data/lib/templates/awesome/css/integrity.css +334 -0
  53. data/lib/templates/awesome/css/reset.css +7 -0
  54. data/lib/templates/awesome/css/syntax.css +19 -0
  55. data/lib/templates/awesome/flay.html.erb +34 -0
  56. data/lib/templates/awesome/flog.html.erb +55 -0
  57. data/lib/templates/awesome/hotspots.html.erb +62 -0
  58. data/lib/templates/awesome/index.html.erb +34 -0
  59. data/lib/templates/awesome/layout.html.erb +30 -0
  60. data/lib/templates/awesome/rails_best_practices.html.erb +27 -0
  61. data/lib/templates/awesome/rcov.html.erb +42 -0
  62. data/lib/templates/awesome/reek.html.erb +40 -0
  63. data/lib/templates/awesome/roodi.html.erb +27 -0
  64. data/lib/templates/awesome/saikuro.html.erb +71 -0
  65. data/lib/templates/awesome/stats.html.erb +51 -0
  66. data/lib/templates/javascripts/bluff-min.js +1 -0
  67. data/lib/templates/javascripts/excanvas.js +35 -0
  68. data/lib/templates/javascripts/js-class.js +1 -0
  69. data/lib/templates/standard/churn.html.erb +31 -0
  70. data/lib/templates/standard/default.css +64 -0
  71. data/lib/templates/standard/flay.html.erb +34 -0
  72. data/lib/templates/standard/flog.html.erb +57 -0
  73. data/lib/templates/standard/hotspots.html.erb +54 -0
  74. data/lib/templates/standard/index.html.erb +41 -0
  75. data/lib/templates/standard/rails_best_practices.html.erb +29 -0
  76. data/lib/templates/standard/rcov.html.erb +43 -0
  77. data/lib/templates/standard/reek.html.erb +42 -0
  78. data/lib/templates/standard/roodi.html.erb +29 -0
  79. data/lib/templates/standard/saikuro.html.erb +84 -0
  80. data/lib/templates/standard/standard_template.rb +26 -0
  81. data/lib/templates/standard/stats.html.erb +55 -0
  82. data/spec/base/base_template_spec.rb +177 -0
  83. data/spec/base/configuration_spec.rb +276 -0
  84. data/spec/base/generator_spec.rb +223 -0
  85. data/spec/base/graph_spec.rb +61 -0
  86. data/spec/base/line_numbers_spec.rb +62 -0
  87. data/spec/base/md5_tracker_spec.rb +57 -0
  88. data/spec/base/report_spec.rb +146 -0
  89. data/spec/generators/churn_spec.rb +41 -0
  90. data/spec/generators/flay_spec.rb +105 -0
  91. data/spec/generators/flog_spec.rb +70 -0
  92. data/spec/generators/rails_best_practices_spec.rb +52 -0
  93. data/spec/generators/rcov_spec.rb +180 -0
  94. data/spec/generators/reek_spec.rb +134 -0
  95. data/spec/generators/roodi_spec.rb +24 -0
  96. data/spec/generators/saikuro_spec.rb +74 -0
  97. data/spec/generators/stats_spec.rb +74 -0
  98. data/spec/graphs/engines/bluff_spec.rb +19 -0
  99. data/spec/graphs/engines/gchart_spec.rb +156 -0
  100. data/spec/graphs/flay_grapher_spec.rb +56 -0
  101. data/spec/graphs/flog_grapher_spec.rb +108 -0
  102. data/spec/graphs/rails_best_practices_grapher_spec.rb +61 -0
  103. data/spec/graphs/rcov_grapher_spec.rb +56 -0
  104. data/spec/graphs/reek_grapher_spec.rb +65 -0
  105. data/spec/graphs/roodi_grapher_spec.rb +56 -0
  106. data/spec/graphs/stats_grapher_spec.rb +68 -0
  107. data/spec/resources/line_numbers/foo.rb +33 -0
  108. data/spec/resources/line_numbers/module.rb +11 -0
  109. data/spec/resources/line_numbers/module_surrounds_class.rb +15 -0
  110. data/spec/resources/line_numbers/two_classes.rb +11 -0
  111. data/spec/resources/saikuro/app/controllers/sessions_controller.rb_cyclo.html +10 -0
  112. data/spec/resources/saikuro/app/controllers/users_controller.rb_cyclo.html +16 -0
  113. data/spec/resources/saikuro/index_cyclo.html +155 -0
  114. data/spec/resources/saikuro_sfiles/thing.rb_cyclo.html +11 -0
  115. data/spec/resources/yml/20090630.yml +7922 -0
  116. data/spec/resources/yml/metric_missing.yml +1 -0
  117. data/spec/spec.opts +6 -0
  118. data/spec/spec_helper.rb +7 -0
  119. data/tasks/metric_fu.rake +22 -0
  120. metadata +448 -0
@@ -0,0 +1,61 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
2
+
3
+ describe RailsBestPracticesGrapher do
4
+ before :each do
5
+ @stats_grapher = MetricFu::RailsBestPracticesGrapher.new
6
+ MetricFu.configuration
7
+ end
8
+
9
+ it "should respond to rails_best_practices_count and labels" do
10
+ @stats_grapher.should respond_to(:rails_best_practices_count)
11
+ @stats_grapher.should respond_to(:labels)
12
+ end
13
+
14
+ describe "responding to #initialize" do
15
+ it "should initialise rails_best_practices_count and labels" do
16
+ @stats_grapher.rails_best_practices_count.should == []
17
+ @stats_grapher.labels.should == {}
18
+ end
19
+ end
20
+
21
+ describe "responding to #get_metrics" do
22
+ context "when metrics were not generated" do
23
+ before(:each) do
24
+ @metrics = YAML::load(File.open(File.join(File.dirname(__FILE__), "..", "resources", "yml", "metric_missing.yml")))
25
+ @date = "01022003"
26
+ end
27
+
28
+ it "should not push to rails_best_practices_count" do
29
+ @stats_grapher.rails_best_practices_count.should_not_receive(:push)
30
+ @stats_grapher.get_metrics(@metrics, @date)
31
+ end
32
+
33
+ it "should not update labels with the date" do
34
+ @stats_grapher.labels.should_not_receive(:update)
35
+ @stats_grapher.get_metrics(@metrics, @date)
36
+ end
37
+ end
38
+
39
+ context "when metrics have been generated" do
40
+ before(:each) do
41
+ @metrics = YAML::load(File.open(File.join(File.dirname(__FILE__), "..", "resources", "yml", "20090630.yml")))
42
+ @date = "01022003"
43
+ end
44
+
45
+ it "should push to rails_best_practices_count" do
46
+ @stats_grapher.rails_best_practices_count.should_receive(:push).with(2)
47
+ @stats_grapher.get_metrics(@metrics, @date)
48
+ end
49
+
50
+ it "should push 0 to rails_best_practices_count when no problems were found" do
51
+ @stats_grapher.rails_best_practices_count.should_receive(:push).with(0)
52
+ @stats_grapher.get_metrics({ :rails_best_practices => {} }, @date)
53
+ end
54
+
55
+ it "should update labels with the date" do
56
+ @stats_grapher.labels.should_receive(:update).with({ 0 => "01022003" })
57
+ @stats_grapher.get_metrics(@metrics, @date)
58
+ end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,56 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
2
+
3
+ describe RcovGrapher do
4
+ before :each do
5
+ @rcov_grapher = MetricFu::RcovGrapher.new
6
+ MetricFu.configuration
7
+ end
8
+
9
+ it "should respond to rcov_percent and labels" do
10
+ @rcov_grapher.should respond_to(:rcov_percent)
11
+ @rcov_grapher.should respond_to(:labels)
12
+ end
13
+
14
+ describe "responding to #initialize" do
15
+ it "should initialise rcov_percent and labels" do
16
+ @rcov_grapher.rcov_percent.should == []
17
+ @rcov_grapher.labels.should == {}
18
+ end
19
+ end
20
+
21
+ describe "responding to #get_metrics" do
22
+ context "when metrics were not generated" do
23
+ before(:each) do
24
+ @metrics = YAML::load(File.open(File.join(File.dirname(__FILE__), "..", "resources", "yml", "metric_missing.yml")))
25
+ @date = "1/2"
26
+ end
27
+
28
+ it "should not push to rcov_percent" do
29
+ @rcov_grapher.rcov_percent.should_not_receive(:push)
30
+ @rcov_grapher.get_metrics(@metrics, @date)
31
+ end
32
+
33
+ it "should not update labels with the date" do
34
+ @rcov_grapher.labels.should_not_receive(:update)
35
+ @rcov_grapher.get_metrics(@metrics, @date)
36
+ end
37
+ end
38
+
39
+ context "when metrics have been generated" do
40
+ before(:each) do
41
+ @metrics = YAML::load(File.open(File.join(File.dirname(__FILE__), "..", "resources", "yml", "20090630.yml")))
42
+ @date = "1/2"
43
+ end
44
+
45
+ it "should push to rcov_percent" do
46
+ @rcov_grapher.rcov_percent.should_receive(:push).with(49.6)
47
+ @rcov_grapher.get_metrics(@metrics, @date)
48
+ end
49
+
50
+ it "should update labels with the date" do
51
+ @rcov_grapher.labels.should_receive(:update).with({ 0 => "1/2" })
52
+ @rcov_grapher.get_metrics(@metrics, @date)
53
+ end
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,65 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
2
+
3
+ describe ReekGrapher do
4
+ before :each do
5
+ @reek_grapher = MetricFu::ReekGrapher.new
6
+ MetricFu.configuration
7
+ end
8
+
9
+ it "should respond to reek_count and labels" do
10
+ @reek_grapher.should respond_to(:reek_count)
11
+ @reek_grapher.should respond_to(:labels)
12
+ end
13
+
14
+ describe "responding to #initialize" do
15
+ it "should initialise reek_count and labels" do
16
+ @reek_grapher.reek_count.should == {}
17
+ @reek_grapher.labels.should == {}
18
+ end
19
+ end
20
+
21
+ describe "responding to #get_metrics" do
22
+ context "when metrics were not generated" do
23
+ before(:each) do
24
+ @metrics = YAML::load(File.open(File.join(File.dirname(__FILE__), "..", "resources", "yml", "metric_missing.yml")))
25
+ @date = "1/2"
26
+ end
27
+
28
+ it "should not set a hash of code smells to reek_count" do
29
+ @reek_grapher.get_metrics(@metrics, @date)
30
+ @reek_grapher.reek_count.should == {}
31
+ end
32
+
33
+ it "should not update labels with the date" do
34
+ @reek_grapher.labels.should_not_receive(:update)
35
+ @reek_grapher.get_metrics(@metrics, @date)
36
+ end
37
+ end
38
+
39
+ context "when metrics have been generated" do
40
+ before(:each) do
41
+ @metrics = YAML::load(File.open(File.join(File.dirname(__FILE__), "..", "resources", "yml", "20090630.yml")))
42
+ @date = "1/2"
43
+ end
44
+
45
+ it "should set a hash of code smells to reek_count" do
46
+ @reek_grapher.get_metrics(@metrics, @date)
47
+ @reek_grapher.reek_count.should == {
48
+ "Uncommunicative Name" => [27],
49
+ "Feature Envy" => [20],
50
+ "Utility Function" => [15],
51
+ "Long Method" => [26],
52
+ "Nested Iterators" => [12],
53
+ "Control Couple" => [4],
54
+ "Duplication" => [48],
55
+ "Large Class" => [1]
56
+ }
57
+ end
58
+
59
+ it "should update labels with the date" do
60
+ @reek_grapher.labels.should_receive(:update).with({ 0 => "1/2" })
61
+ @reek_grapher.get_metrics(@metrics, @date)
62
+ end
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,56 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
2
+
3
+ describe RoodiGrapher do
4
+ before :each do
5
+ @roodi_grapher = MetricFu::RoodiGrapher.new
6
+ MetricFu.configuration
7
+ end
8
+
9
+ it "should respond to roodi_count and labels" do
10
+ @roodi_grapher.should respond_to(:roodi_count)
11
+ @roodi_grapher.should respond_to(:labels)
12
+ end
13
+
14
+ describe "responding to #initialize" do
15
+ it "should initialise roodi_count and labels" do
16
+ @roodi_grapher.roodi_count.should == []
17
+ @roodi_grapher.labels.should == {}
18
+ end
19
+ end
20
+
21
+ describe "responding to #get_metrics" do
22
+ context "when metrics were not generated" do
23
+ before(:each) do
24
+ @metrics = YAML::load(File.open(File.join(File.dirname(__FILE__), "..", "resources", "yml", "metric_missing.yml")))
25
+ @date = "1/2"
26
+ end
27
+
28
+ it "should not push to roodi_count" do
29
+ @roodi_grapher.roodi_count.should_not_receive(:push)
30
+ @roodi_grapher.get_metrics(@metrics, @date)
31
+ end
32
+
33
+ it "should not update labels with the date" do
34
+ @roodi_grapher.labels.should_not_receive(:update)
35
+ @roodi_grapher.get_metrics(@metrics, @date)
36
+ end
37
+ end
38
+
39
+ context "when metrics have been generated" do
40
+ before(:each) do
41
+ @metrics = YAML::load(File.open(File.join(File.dirname(__FILE__), "..", "resources", "yml", "20090630.yml")))
42
+ @date = "1/2"
43
+ end
44
+
45
+ it "should push to roodi_count" do
46
+ @roodi_grapher.roodi_count.should_receive(:push).with(13)
47
+ @roodi_grapher.get_metrics(@metrics, @date)
48
+ end
49
+
50
+ it "should update labels with the date" do
51
+ @roodi_grapher.labels.should_receive(:update).with({ 0 => "1/2" })
52
+ @roodi_grapher.get_metrics(@metrics, @date)
53
+ end
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,68 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
2
+
3
+ describe StatsGrapher do
4
+ before :each do
5
+ @stats_grapher = MetricFu::StatsGrapher.new
6
+ MetricFu.configuration
7
+ end
8
+
9
+ it "should respond to loc_counts and lot_counts and labels" do
10
+ @stats_grapher.should respond_to(:loc_counts)
11
+ @stats_grapher.should respond_to(:lot_counts)
12
+ @stats_grapher.should respond_to(:labels)
13
+ end
14
+
15
+ describe "responding to #initialize" do
16
+ it "should initialise loc_counts and lot_counts and labels" do
17
+ @stats_grapher.loc_counts.should == []
18
+ @stats_grapher.lot_counts.should == []
19
+ @stats_grapher.labels.should == {}
20
+ end
21
+ end
22
+
23
+ describe "responding to #get_metrics" do
24
+ context "when metrics were not generated" do
25
+ before(:each) do
26
+ @metrics = YAML::load(File.open(File.join(File.dirname(__FILE__), "..", "resources", "yml", "metric_missing.yml")))
27
+ @date = "01022003"
28
+ end
29
+
30
+ it "should not push to loc_counts" do
31
+ @stats_grapher.loc_counts.should_not_receive(:push)
32
+ @stats_grapher.get_metrics(@metrics, @date)
33
+ end
34
+
35
+ it "should not push to lot_counts" do
36
+ @stats_grapher.lot_counts.should_not_receive(:push)
37
+ @stats_grapher.get_metrics(@metrics, @date)
38
+ end
39
+
40
+ it "should not update labels with the date" do
41
+ @stats_grapher.labels.should_not_receive(:update)
42
+ @stats_grapher.get_metrics(@metrics, @date)
43
+ end
44
+ end
45
+
46
+ context "when metrics have been generated" do
47
+ before(:each) do
48
+ @metrics = YAML::load(File.open(File.join(File.dirname(__FILE__), "..", "resources", "yml", "20090630.yml")))
49
+ @date = "01022003"
50
+ end
51
+
52
+ it "should push to loc_counts" do
53
+ @stats_grapher.loc_counts.should_receive(:push).with(15935)
54
+ @stats_grapher.get_metrics(@metrics, @date)
55
+ end
56
+
57
+ it "should push to lot_counts" do
58
+ @stats_grapher.lot_counts.should_receive(:push).with(7438)
59
+ @stats_grapher.get_metrics(@metrics, @date)
60
+ end
61
+
62
+ it "should update labels with the date" do
63
+ @stats_grapher.labels.should_receive(:update).with({ 0 => "01022003" })
64
+ @stats_grapher.get_metrics(@metrics, @date)
65
+ end
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,33 @@
1
+ class Foo
2
+
3
+ def self.awesome
4
+ 1 + 1
5
+ end
6
+
7
+ def what
8
+ 12
9
+ end
10
+
11
+ def hello
12
+ puts "Hi There"
13
+ end
14
+
15
+
16
+ def awesome
17
+ 3+4
18
+ end
19
+
20
+ class << self
21
+ def neat
22
+ "23 skido"
23
+ end
24
+ end
25
+
26
+ private
27
+
28
+ def whoop
29
+ "w00t"
30
+ end
31
+ end
32
+
33
+ #comment
@@ -0,0 +1,11 @@
1
+ module KickAss
2
+
3
+ def get_beat_up?
4
+ [1,2,3].inject {|m,o| m = m + o}
5
+ true
6
+ end
7
+
8
+ def fight
9
+ "poorly"
10
+ end
11
+ end
@@ -0,0 +1,15 @@
1
+ module StuffModule
2
+
3
+ class ThingClass
4
+
5
+ def do_it
6
+ "do it"
7
+ end
8
+
9
+ end
10
+
11
+ def blah
12
+ "blah blah"
13
+ end
14
+
15
+ end
@@ -0,0 +1,11 @@
1
+ class Foo
2
+ def stuff
3
+ 5
4
+ end
5
+ end
6
+
7
+ class Bar
8
+ def stuff
9
+ 1
10
+ end
11
+ end
@@ -0,0 +1,10 @@
1
+ -- START --
2
+ Type:Global Name: Complexity:0 Lines:1
3
+ -- END --
4
+ -- START SessionsController --
5
+ Type:Class Name:SessionsController Complexity:6 Lines:40
6
+ Type:Def Name:new Complexity:2 Lines:2
7
+ Type:Def Name:create Complexity:2 Lines:19
8
+ Type:Def Name:destroy Complexity:1 Lines:4
9
+ Type:Def Name:note_failed_signin Complexity:1 Lines:3
10
+ -- END SessionsController --
@@ -0,0 +1,16 @@
1
+ -- START UsersController --
2
+ Type:Class Name:UsersController Complexity:25 Lines:111
3
+ Type:Def Name:signup Complexity:1 Lines:3
4
+ Type:Def Name:new Complexity:1 Lines:2
5
+ Type:Def Name:edit Complexity:1 Lines:3
6
+ Type:Def Name:update Complexity:2 Lines:8
7
+ Type:Def Name:index Complexity:1 Lines:2
8
+ Type:Def Name:create Complexity:4 Lines:15
9
+ Type:Def Name:thank_you Complexity:2 Lines:10
10
+ Type:Def Name:destroy Complexity:1 Lines:3
11
+ Type:Def Name:add_primary_site Complexity:1 Lines:4
12
+ Type:Def Name:users_have_changed Complexity:3 Lines:8
13
+ Type:Def Name:after_create_page Complexity:2 Lines:6
14
+ Type:Def Name:sanitize_params Complexity:3 Lines:3
15
+ Type:Def Name:authorize_user Complexity:3 Lines:5
16
+ -- END UsersController --
@@ -0,0 +1,155 @@
1
+ <html><head><title>Index for cyclomatic complexity</title></head>
2
+ <style>
3
+ body {
4
+ margin: 20px;
5
+ padding: 0;
6
+ font-size: 12px;
7
+ font-family: bitstream vera sans, verdana, arial, sans serif;
8
+ background-color: #efefef;
9
+ }
10
+
11
+ table {
12
+ border-collapse: collapse;
13
+ /*border-spacing: 0;*/
14
+ border: 1px solid #666;
15
+ background-color: #fff;
16
+ margin-bottom: 20px;
17
+ }
18
+
19
+ table, th, th+th, td, td+td {
20
+ border: 1px solid #ccc;
21
+ }
22
+
23
+ table th {
24
+ font-size: 12px;
25
+ color: #fc0;
26
+ padding: 4px 0;
27
+ background-color: #336;
28
+ }
29
+
30
+ th, td {
31
+ padding: 4px 10px;
32
+ }
33
+
34
+ td {
35
+ font-size: 13px;
36
+ }
37
+
38
+ .class_name {
39
+ font-size: 17px;
40
+ margin: 20px 0 0;
41
+ }
42
+
43
+ .class_complexity {
44
+ margin: 0 auto;
45
+ }
46
+
47
+ .class_complexity>.class_complexity {
48
+ margin: 0;
49
+ }
50
+
51
+ .class_total_complexity, .class_total_lines, .start_token_count, .file_count {
52
+ font-size: 13px;
53
+ font-weight: bold;
54
+ }
55
+
56
+ .class_total_complexity, .class_total_lines {
57
+ color: #c00;
58
+ }
59
+
60
+ .start_token_count, .file_count {
61
+ color: #333;
62
+ }
63
+
64
+ .warning {
65
+ background-color: yellow;
66
+ }
67
+
68
+ .error {
69
+ background-color: #f00;
70
+ }
71
+ </style>
72
+
73
+ <body>
74
+ <h1>Index for cyclomatic complexity</h1>
75
+ <h2 class="class_name">Errors and Warnings</h2>
76
+ <table width="100%" border="1">
77
+ <tr><th>Class</th><th>Method</th><th>Complexity</th></tr>
78
+
79
+ <tr><td><a href="./app/controllers/activity_reports_controller.rb_cyclo.html">ActivityReportsController</a></td><td>authorize_user</td>
80
+ <td class="warning">6</td></tr>
81
+ <tr><td><a href="./app/controllers/primary_sites_controller.rb_cyclo.html">PrimarySitesController</a></td><td>create</td>
82
+ <td class="warning">5</td></tr>
83
+ <tr><td><a href="./app/controllers/primary_sites_controller.rb_cyclo.html">PrimarySitesController</a></td><td>save_link_targets</td>
84
+ <td class="warning">5</td></tr>
85
+ <tr><td><a href="./app/models/link_target.rb_cyclo.html">LinkTarget</a></td><td>update_backlink_status</td>
86
+ <td class="warning">5</td></tr>
87
+ </table>
88
+ <hr/>
89
+ <h2 class="class_name">Analyzed Files</h2>
90
+ <ul>
91
+ <li>
92
+ <p class="file_name"><a href="./app/models/user.rb_cyclo.html">app/models/user.rb</a>
93
+ </li>
94
+ <li>
95
+ <p class="file_name"><a href="./app/models/subscriber.rb_cyclo.html">app/models/subscriber.rb</a>
96
+ </li>
97
+ <li>
98
+ <p class="file_name"><a href="./app/models/primary_site.rb_cyclo.html">app/models/primary_site.rb</a>
99
+ </li>
100
+ <li>
101
+ <p class="file_name"><a href="./app/models/link_target.rb_cyclo.html">app/models/link_target.rb</a>
102
+ </li>
103
+ <li>
104
+ <p class="file_name"><a href="./app/models/comparison_site.rb_cyclo.html">app/models/comparison_site.rb</a>
105
+ </li>
106
+ <li>
107
+ <p class="file_name"><a href="./app/models/backlink_crawl_status.rb_cyclo.html">app/models/backlink_crawl_status.rb</a>
108
+ </li>
109
+ <li>
110
+ <p class="file_name"><a href="./app/models/backlink_crawl_notifier.rb_cyclo.html">app/models/backlink_crawl_notifier.rb</a>
111
+ </li>
112
+ <li>
113
+ <p class="file_name"><a href="./app/models/activity_report_measure.rb_cyclo.html">app/models/activity_report_measure.rb</a>
114
+ </li>
115
+ <li>
116
+ <p class="file_name"><a href="./app/models/activity_report.rb_cyclo.html">app/models/activity_report.rb</a>
117
+ </li>
118
+ <li>
119
+ <p class="file_name"><a href="./app/helpers/users_helper.rb_cyclo.html">app/helpers/users_helper.rb</a>
120
+ </li>
121
+ <li>
122
+ <p class="file_name"><a href="./app/helpers/sessions_helper.rb_cyclo.html">app/helpers/sessions_helper.rb</a>
123
+ </li>
124
+ <li>
125
+ <p class="file_name"><a href="./app/helpers/primary_sites_helper.rb_cyclo.html">app/helpers/primary_sites_helper.rb</a>
126
+ </li>
127
+ <li>
128
+ <p class="file_name"><a href="./app/helpers/link_targets_helper.rb_cyclo.html">app/helpers/link_targets_helper.rb</a>
129
+ </li>
130
+ <li>
131
+ <p class="file_name"><a href="./app/helpers/application_helper.rb_cyclo.html">app/helpers/application_helper.rb</a>
132
+ </li>
133
+ <li>
134
+ <p class="file_name"><a href="./app/controllers/users_controller.rb_cyclo.html">app/controllers/users_controller.rb</a>
135
+ </li>
136
+ <li>
137
+ <p class="file_name"><a href="./app/controllers/sessions_controller.rb_cyclo.html">app/controllers/sessions_controller.rb</a>
138
+ </li>
139
+ <li>
140
+ <p class="file_name"><a href="./app/controllers/primary_sites_controller.rb_cyclo.html">app/controllers/primary_sites_controller.rb</a>
141
+ </li>
142
+ <li>
143
+ <p class="file_name"><a href="./app/controllers/link_targets_controller.rb_cyclo.html">app/controllers/link_targets_controller.rb</a>
144
+ </li>
145
+ <li>
146
+ <p class="file_name"><a href="./app/controllers/bookmarklet_integration_controller.rb_cyclo.html">app/controllers/bookmarklet_integration_controller.rb</a>
147
+ </li>
148
+ <li>
149
+ <p class="file_name"><a href="./app/controllers/application.rb_cyclo.html">app/controllers/application.rb</a>
150
+ </li>
151
+ <li>
152
+ <p class="file_name"><a href="./app/controllers/activity_reports_controller.rb_cyclo.html">app/controllers/activity_reports_controller.rb</a>
153
+ </li>
154
+ </ul>
155
+ </body></html>
@@ -0,0 +1,11 @@
1
+ -- START Mod --
2
+ Type:Module Name:Mod Complexity:2 Lines:7
3
+ Type:Def Name:self.included Complexity:2 Lines:5
4
+ -- START --
5
+ Type:Class Name: Complexity:0 Lines:1
6
+ -- END --
7
+ Type:Def Name:update Complexity:1 Lines:1
8
+ -- END Mod --
9
+ -- START Thing --
10
+ Type:Class Name:Thing Complexity:0 Lines:2
11
+ -- END Thing --