metric_fu 4.11.3 → 4.11.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (188) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/.rubocop.yml +15 -0
  5. data/.rubocop_todo.yml +69 -0
  6. data/.travis.yml +0 -1
  7. data/CONTRIBUTORS +1 -1
  8. data/Gemfile +23 -20
  9. data/Guardfile +9 -9
  10. data/HISTORY.md +10 -1
  11. data/checksum/metric_fu-4.11.3.gem.sha512 +1 -0
  12. data/config/rubocop.yml +269 -0
  13. data/gem_tasks/rubocop.rake +10 -0
  14. data/lib/metric_fu.rb +11 -9
  15. data/lib/metric_fu/calculate.rb +0 -1
  16. data/lib/metric_fu/cli/client.rb +6 -6
  17. data/lib/metric_fu/cli/helper.rb +22 -13
  18. data/lib/metric_fu/cli/parser.rb +14 -18
  19. data/lib/metric_fu/configuration.rb +7 -11
  20. data/lib/metric_fu/constantize.rb +4 -4
  21. data/lib/metric_fu/data_structures/line_numbers.rb +10 -11
  22. data/lib/metric_fu/data_structures/location.rb +12 -14
  23. data/lib/metric_fu/data_structures/sexp_node.rb +31 -13
  24. data/lib/metric_fu/environment.rb +29 -31
  25. data/lib/metric_fu/formatter.rb +4 -6
  26. data/lib/metric_fu/formatter/html.rb +13 -13
  27. data/lib/metric_fu/formatter/syntax.rb +5 -7
  28. data/lib/metric_fu/formatter/yaml.rb +1 -1
  29. data/lib/metric_fu/gem_run.rb +13 -15
  30. data/lib/metric_fu/gem_version.rb +9 -11
  31. data/lib/metric_fu/generator.rb +5 -8
  32. data/lib/metric_fu/io.rb +13 -15
  33. data/lib/metric_fu/loader.rb +17 -18
  34. data/lib/metric_fu/logger.rb +15 -18
  35. data/lib/metric_fu/logging/mf_debugger.rb +4 -4
  36. data/lib/metric_fu/metric.rb +11 -12
  37. data/lib/metric_fu/metrics/cane/generator.rb +10 -9
  38. data/lib/metric_fu/metrics/cane/grapher.rb +5 -7
  39. data/lib/metric_fu/metrics/cane/metric.rb +6 -8
  40. data/lib/metric_fu/metrics/cane/report.html.erb +3 -3
  41. data/lib/metric_fu/metrics/cane/violations.rb +6 -6
  42. data/lib/metric_fu/metrics/churn/generator.rb +2 -6
  43. data/lib/metric_fu/metrics/churn/hotspot.rb +1 -3
  44. data/lib/metric_fu/metrics/churn/metric.rb +5 -7
  45. data/lib/metric_fu/metrics/flay/generator.rb +7 -11
  46. data/lib/metric_fu/metrics/flay/grapher.rb +5 -6
  47. data/lib/metric_fu/metrics/flay/hotspot.rb +5 -7
  48. data/lib/metric_fu/metrics/flay/metric.rb +5 -7
  49. data/lib/metric_fu/metrics/flog/generator.rb +22 -23
  50. data/lib/metric_fu/metrics/flog/grapher.rb +11 -11
  51. data/lib/metric_fu/metrics/flog/hotspot.rb +3 -5
  52. data/lib/metric_fu/metrics/flog/metric.rb +3 -5
  53. data/lib/metric_fu/metrics/hotspots/analysis/analyzed_problems.rb +0 -1
  54. data/lib/metric_fu/metrics/hotspots/analysis/analyzer_tables.rb +19 -18
  55. data/lib/metric_fu/metrics/hotspots/analysis/grouping.rb +0 -2
  56. data/lib/metric_fu/metrics/hotspots/analysis/groupings.rb +1 -3
  57. data/lib/metric_fu/metrics/hotspots/analysis/problems.rb +4 -6
  58. data/lib/metric_fu/metrics/hotspots/analysis/ranked_problem_location.rb +14 -9
  59. data/lib/metric_fu/metrics/hotspots/analysis/ranking.rb +4 -5
  60. data/lib/metric_fu/metrics/hotspots/analysis/rankings.rb +1 -3
  61. data/lib/metric_fu/metrics/hotspots/analysis/record.rb +3 -5
  62. data/lib/metric_fu/metrics/hotspots/analysis/scoring_strategies.rb +0 -2
  63. data/lib/metric_fu/metrics/hotspots/analysis/table.rb +3 -4
  64. data/lib/metric_fu/metrics/hotspots/generator.rb +3 -6
  65. data/lib/metric_fu/metrics/hotspots/hotspot.rb +13 -13
  66. data/lib/metric_fu/metrics/hotspots/hotspot_analyzer.rb +5 -8
  67. data/lib/metric_fu/metrics/hotspots/metric.rb +1 -3
  68. data/lib/metric_fu/metrics/hotspots/report.html.erb +1 -1
  69. data/lib/metric_fu/metrics/rails_best_practices/generator.rb +10 -12
  70. data/lib/metric_fu/metrics/rails_best_practices/grapher.rb +5 -6
  71. data/lib/metric_fu/metrics/rails_best_practices/metric.rb +1 -3
  72. data/lib/metric_fu/metrics/rcov/external_client.rb +1 -3
  73. data/lib/metric_fu/metrics/rcov/generator.rb +13 -15
  74. data/lib/metric_fu/metrics/rcov/grapher.rb +6 -7
  75. data/lib/metric_fu/metrics/rcov/hotspot.rb +5 -7
  76. data/lib/metric_fu/metrics/rcov/metric.rb +5 -7
  77. data/lib/metric_fu/metrics/rcov/rcov_format_coverage.rb +16 -55
  78. data/lib/metric_fu/metrics/rcov/rcov_line.rb +48 -0
  79. data/lib/metric_fu/metrics/rcov/report.html.erb +2 -2
  80. data/lib/metric_fu/metrics/rcov/simplecov_formatter.rb +10 -11
  81. data/lib/metric_fu/metrics/reek/generator.rb +22 -23
  82. data/lib/metric_fu/metrics/reek/grapher.rb +5 -6
  83. data/lib/metric_fu/metrics/reek/hotspot.rb +5 -7
  84. data/lib/metric_fu/metrics/reek/metric.rb +2 -4
  85. data/lib/metric_fu/metrics/roodi/generator.rb +9 -10
  86. data/lib/metric_fu/metrics/roodi/grapher.rb +5 -6
  87. data/lib/metric_fu/metrics/roodi/hotspot.rb +1 -3
  88. data/lib/metric_fu/metrics/roodi/metric.rb +2 -4
  89. data/lib/metric_fu/metrics/saikuro/generator.rb +23 -27
  90. data/lib/metric_fu/metrics/saikuro/hotspot.rb +1 -3
  91. data/lib/metric_fu/metrics/saikuro/metric.rb +7 -8
  92. data/lib/metric_fu/metrics/saikuro/parsing_element.rb +6 -8
  93. data/lib/metric_fu/metrics/saikuro/report.html.erb +1 -1
  94. data/lib/metric_fu/metrics/saikuro/scratch_file.rb +24 -29
  95. data/lib/metric_fu/metrics/stats/generator.rb +9 -12
  96. data/lib/metric_fu/metrics/stats/grapher.rb +8 -9
  97. data/lib/metric_fu/metrics/stats/hotspot.rb +1 -3
  98. data/lib/metric_fu/metrics/stats/metric.rb +3 -5
  99. data/lib/metric_fu/reporter.rb +1 -1
  100. data/lib/metric_fu/reporting/graphs/graph.rb +8 -12
  101. data/lib/metric_fu/reporting/graphs/grapher.rb +7 -9
  102. data/lib/metric_fu/reporting/result.rb +0 -3
  103. data/lib/metric_fu/run.rb +12 -3
  104. data/lib/metric_fu/tasks/metric_fu.rake +8 -8
  105. data/lib/metric_fu/templates/configuration.rb +2 -5
  106. data/lib/metric_fu/templates/metrics_template.rb +19 -19
  107. data/lib/metric_fu/templates/report.rb +5 -8
  108. data/lib/metric_fu/templates/template.rb +20 -24
  109. data/lib/metric_fu/utility.rb +7 -8
  110. data/lib/metric_fu/version.rb +1 -1
  111. data/metric_fu.gemspec +31 -32
  112. data/spec/cli/helper_spec.rb +7 -14
  113. data/spec/dummy/lib/bad_encoding.rb +1 -1
  114. data/spec/fixtures/coverage-153.rb +2 -2
  115. data/spec/fixtures/coverage.rb +2 -2
  116. data/spec/metric_fu/calculate_spec.rb +3 -3
  117. data/spec/metric_fu/configuration_spec.rb +70 -82
  118. data/spec/metric_fu/data_structures/line_numbers_spec.rb +3 -5
  119. data/spec/metric_fu/data_structures/location_spec.rb +13 -31
  120. data/spec/metric_fu/formatter/configuration_spec.rb +11 -13
  121. data/spec/metric_fu/formatter/html_spec.rb +21 -28
  122. data/spec/metric_fu/formatter/yaml_spec.rb +9 -17
  123. data/spec/metric_fu/formatter_spec.rb +6 -6
  124. data/spec/metric_fu/gem_version_spec.rb +3 -5
  125. data/spec/metric_fu/generator_spec.rb +28 -38
  126. data/spec/metric_fu/loader_spec.rb +1 -3
  127. data/spec/metric_fu/metric_spec.rb +17 -21
  128. data/spec/metric_fu/metrics/cane/configuration_spec.rb +8 -8
  129. data/spec/metric_fu/metrics/cane/generator_spec.rb +26 -29
  130. data/spec/metric_fu/metrics/churn/configuration_spec.rb +6 -8
  131. data/spec/metric_fu/metrics/churn/generator_spec.rb +6 -11
  132. data/spec/metric_fu/metrics/flay/configuration_spec.rb +6 -8
  133. data/spec/metric_fu/metrics/flay/generator_spec.rb +36 -37
  134. data/spec/metric_fu/metrics/flay/grapher_spec.rb +2 -2
  135. data/spec/metric_fu/metrics/flog/configuration_spec.rb +11 -13
  136. data/spec/metric_fu/metrics/flog/generator_spec.rb +29 -31
  137. data/spec/metric_fu/metrics/flog/grapher_spec.rb +8 -10
  138. data/spec/metric_fu/metrics/hotspots/analysis/analyzed_problems_spec.rb +18 -24
  139. data/spec/metric_fu/metrics/hotspots/analysis/analyzer_tables_spec.rb +12 -17
  140. data/spec/metric_fu/metrics/hotspots/analysis/ranking_spec.rb +2 -6
  141. data/spec/metric_fu/metrics/hotspots/analysis/rankings_spec.rb +5 -14
  142. data/spec/metric_fu/metrics/hotspots/analysis/table_spec.rb +1 -3
  143. data/spec/metric_fu/metrics/hotspots/generator_spec.rb +6 -8
  144. data/spec/metric_fu/metrics/hotspots/hotspot_analyzer_spec.rb +1 -3
  145. data/spec/metric_fu/metrics/hotspots/hotspot_spec.rb +4 -5
  146. data/spec/metric_fu/metrics/rails_best_practices/configuration_spec.rb +6 -10
  147. data/spec/metric_fu/metrics/rails_best_practices/generator_spec.rb +2 -3
  148. data/spec/metric_fu/metrics/rails_best_practices/grapher_spec.rb +3 -3
  149. data/spec/metric_fu/metrics/rcov/configuration_spec.rb +20 -22
  150. data/spec/metric_fu/metrics/rcov/generator_spec.rb +6 -10
  151. data/spec/metric_fu/metrics/rcov/grapher_spec.rb +2 -2
  152. data/spec/metric_fu/metrics/rcov/hotspot_spec.rb +8 -8
  153. data/spec/metric_fu/metrics/rcov/rcov_line_spec.rb +89 -0
  154. data/spec/metric_fu/metrics/rcov/simplecov_formatter_spec.rb +31 -33
  155. data/spec/metric_fu/metrics/reek/configuration_spec.rb +6 -6
  156. data/spec/metric_fu/metrics/reek/generator_spec.rb +19 -20
  157. data/spec/metric_fu/metrics/reek/grapher_spec.rb +4 -4
  158. data/spec/metric_fu/metrics/roodi/configuration_spec.rb +7 -9
  159. data/spec/metric_fu/metrics/roodi/generator_spec.rb +3 -3
  160. data/spec/metric_fu/metrics/roodi/grapher_spec.rb +2 -2
  161. data/spec/metric_fu/metrics/saikuro/configuration_spec.rb +18 -19
  162. data/spec/metric_fu/metrics/saikuro/generator_spec.rb +7 -7
  163. data/spec/metric_fu/metrics/stats/generator_spec.rb +9 -9
  164. data/spec/metric_fu/metrics/stats/grapher_spec.rb +2 -2
  165. data/spec/metric_fu/reporter_spec.rb +3 -4
  166. data/spec/metric_fu/reporting/graphs/graph_spec.rb +1 -4
  167. data/spec/metric_fu/reporting/graphs/grapher_spec.rb +5 -5
  168. data/spec/metric_fu/reporting/result_spec.rb +9 -11
  169. data/spec/metric_fu/run_spec.rb +18 -32
  170. data/spec/metric_fu/templates/configuration_spec.rb +28 -34
  171. data/spec/metric_fu/templates/metrics_template_spec.rb +11 -0
  172. data/spec/metric_fu/templates/report_spec.rb +4 -4
  173. data/spec/metric_fu/templates/template_spec.rb +62 -48
  174. data/spec/metric_fu/utility_spec.rb +2 -2
  175. data/spec/metric_fu_spec.rb +5 -7
  176. data/spec/shared/configured.rb +9 -11
  177. data/spec/shared/test_coverage.rb +5 -9
  178. data/spec/spec_helper.rb +9 -9
  179. data/spec/support/deferred_garbaged_collection.rb +1 -2
  180. data/spec/support/matcher_create_file.rb +2 -4
  181. data/spec/support/matcher_create_files.rb +2 -4
  182. data/spec/support/suite.rb +3 -3
  183. data/spec/support/test_fixtures.rb +5 -7
  184. data/spec/support/timeout.rb +1 -1
  185. data/spec/support/usage_test.rb +23 -24
  186. data/spec/usage_test_spec.rb +18 -20
  187. metadata +12 -2
  188. metadata.gz.sig +0 -0
@@ -1,4 +1,4 @@
1
- MetricFu.reporting_require { 'graphs/grapher' }
1
+ MetricFu.reporting_require { "graphs/grapher" }
2
2
  module MetricFu
3
3
  class FlogGrapher < Grapher
4
4
  attr_accessor :flog_average, :labels, :top_five_percent_average
@@ -11,30 +11,30 @@ module MetricFu
11
11
  super
12
12
  @flog_average = []
13
13
  @labels = {}
14
- @top_five_percent_average =[]
14
+ @top_five_percent_average = []
15
15
  end
16
16
 
17
17
  def get_metrics(metrics, date)
18
18
  if metrics && metrics[:flog]
19
19
  @top_five_percent_average.push(calc_top_five_percent_average(metrics))
20
20
  @flog_average.push(metrics[:flog][:average])
21
- @labels.update( { @labels.size => date })
21
+ @labels.update(@labels.size => date)
22
22
  end
23
23
  end
24
24
 
25
25
  def title
26
- 'Flog: code complexity'
26
+ "Flog: code complexity"
27
27
  end
28
28
 
29
29
  def data
30
30
  [
31
- ['average', @flog_average.join(',')],
32
- ['top 5% average', @top_five_percent_average.join(',')]
31
+ ["average", @flog_average.join(",")],
32
+ ["top 5% average", @top_five_percent_average.join(",")]
33
33
  ]
34
34
  end
35
35
 
36
36
  def output_filename
37
- 'flog.js'
37
+ "flog.js"
38
38
  end
39
39
 
40
40
  private
@@ -43,7 +43,7 @@ module MetricFu
43
43
  return calc_top_five_percent_average_legacy(metrics) if metrics[:flog][:pages]
44
44
 
45
45
  method_scores = metrics[:flog][:method_containers].inject([]) do |method_scores, container|
46
- method_scores += container[:methods].values.map {|v| v[:score]}
46
+ method_scores += container[:methods].values.map { |v| v[:score] }
47
47
  end
48
48
  method_scores.sort!.reverse!
49
49
 
@@ -59,14 +59,14 @@ module MetricFu
59
59
  end
60
60
 
61
61
  def calc_top_five_percent_average_legacy(metrics)
62
- methods = metrics[:flog][:pages].inject([]) {|methods, page| methods << page[:scanned_methods]}
62
+ methods = metrics[:flog][:pages].inject([]) { |methods, page| methods << page[:scanned_methods] }
63
63
  methods.flatten!
64
- methods = methods.sort_by {|method| method[:score]}.reverse
64
+ methods = methods.sort_by { |method| method[:score] }.reverse
65
65
 
66
66
  number_of_methods_that_is_five_percent = (methods.size * 0.05).ceil
67
67
 
68
68
  total_for_five_percent =
69
- methods[0...number_of_methods_that_is_five_percent].inject(0) {|total, method| total += method[:score] }
69
+ methods[0...number_of_methods_that_is_five_percent].inject(0) { |total, method| total += method[:score] }
70
70
  if number_of_methods_that_is_five_percent == 0
71
71
  0.0
72
72
  else
@@ -1,5 +1,4 @@
1
1
  class MetricFu::FlogHotspot < MetricFu::Hotspot
2
-
3
2
  COLUMNS = %w{score}
4
3
 
5
4
  def columns
@@ -23,10 +22,10 @@ class MetricFu::FlogHotspot < MetricFu::Hotspot
23
22
  end
24
23
 
25
24
  def generate_records(data, table)
26
- return if data==nil
25
+ return if data == nil
27
26
  Array(data[:method_containers]).each do |method_container|
28
27
  Array(method_container[:methods]).each do |entry|
29
- file_path = entry[1][:path].sub(%r{^/},'') if entry[1][:path]
28
+ file_path = entry[1][:path].sub(%r{^/}, "") if entry[1][:path]
30
29
  location = MetricFu::Location.for(entry.first)
31
30
  table << {
32
31
  "metric" => name,
@@ -42,7 +41,6 @@ class MetricFu::FlogHotspot < MetricFu::Hotspot
42
41
  def present_group(group)
43
42
  occurences = group.size
44
43
  complexity = get_mean(group.column("score"))
45
- "#{"average " if occurences > 1}complexity is %.1f" % complexity
44
+ "#{'average ' if occurences > 1}complexity is %.1f" % complexity
46
45
  end
47
-
48
46
  end
@@ -1,12 +1,11 @@
1
1
  module MetricFu
2
2
  class MetricFlog < Metric
3
-
4
3
  def name
5
4
  :flog
6
5
  end
7
6
 
8
7
  def default_run_options
9
- { :dirs_to_flog => MetricFu::Io::FileSystem.directory('code_dirs'), :continue => true, :all => true, :quiet => true }
8
+ { dirs_to_flog: MetricFu::Io::FileSystem.directory("code_dirs"), continue: true, all: true, quiet: true }
10
9
  end
11
10
 
12
11
  def has_graph?
@@ -22,10 +21,9 @@ module MetricFu
22
21
  end
23
22
 
24
23
  def activate
25
- activate_library 'flog'
26
- activate_library 'flog_cli'
24
+ activate_library "flog"
25
+ activate_library "flog_cli"
27
26
  super
28
27
  end
29
-
30
28
  end
31
29
  end
@@ -30,6 +30,5 @@ module MetricFu
30
30
  tables = @analyzer_tables.tables_for(granularity)
31
31
  tables[ranked_item_name]
32
32
  end
33
-
34
33
  end
35
34
  end
@@ -23,10 +23,10 @@ module MetricFu
23
23
 
24
24
  def tables_for(item)
25
25
  {
26
- :class => @class_tables,
27
- :method => @method_tables,
28
- :file => @file_tables,
29
- :tool => @tool_tables
26
+ class: @class_tables,
27
+ method: @method_tables,
28
+ file: @file_tables,
29
+ tool: @tool_tables
30
30
  }.fetch(item) do
31
31
  raise ArgumentError, "Item must be :class, :method, or :file, but was #{item}"
32
32
  end
@@ -35,7 +35,7 @@ module MetricFu
35
35
  private
36
36
 
37
37
  def make_table(columns)
38
- MetricFu::Table.new(:column_names => columns)
38
+ MetricFu::Table.new(column_names: columns)
39
39
  end
40
40
 
41
41
  def make_table_hash(columns)
@@ -52,9 +52,9 @@ module MetricFu
52
52
  table.each do |row|
53
53
  # We know that Saikuro provides the wrong data
54
54
  # TODO inject Saikuro reference
55
- next if row['metric'] == :saikuro
56
- key = [row['class_name'], row['method_name']]
57
- file_path = row['file_path']
55
+ next if row["metric"] == :saikuro
56
+ key = [row["class_name"], row["method_name"]]
57
+ file_path = row["file_path"]
58
58
  @class_and_method_to_file[key] ||= file_path
59
59
  end
60
60
  end
@@ -63,7 +63,7 @@ module MetricFu
63
63
  def process_rows!
64
64
  # Correct incorrect rows in the table
65
65
  table.each do |row|
66
- row_metric = row['metric'] #perf optimization
66
+ row_metric = row["metric"] # perf optimization
67
67
  # TODO inject Saikuro reference
68
68
  if row_metric == :saikuro
69
69
  fix_row_file_path!(row)
@@ -75,37 +75,38 @@ module MetricFu
75
75
  end
76
76
  end
77
77
 
78
-
79
78
  # COLLECT AND PROCESS RAW HOTSPOT METRICS
80
79
  def fix_row_file_path!(row)
81
80
  # We know that Saikuro rows are broken
82
81
  # next unless row['metric'] == :saikuro
83
- key = [row['class_name'], row['method_name']]
84
- current_file_path = row['file_path'].to_s
82
+ key = [row["class_name"], row["method_name"]]
83
+ current_file_path = row["file_path"].to_s
85
84
  correct_file_path = @class_and_method_to_file[key]
86
- if(correct_file_path!=nil && correct_file_path.include?(current_file_path))
87
- row['file_path'] = correct_file_path
85
+ if !correct_file_path.nil? && correct_file_path.include?(current_file_path)
86
+ row["file_path"] = correct_file_path
88
87
  else
89
88
  # There wasn't an exact match, so we can do a substring match
90
89
  matching_file_path = file_paths.detect {|file_path|
91
- file_path!=nil && file_path.include?(current_file_path)
90
+ !file_path.nil? && file_path.include?(current_file_path)
92
91
  }
93
- if(matching_file_path)
94
- row['file_path'] = matching_file_path
92
+ if matching_file_path
93
+ row["file_path"] = matching_file_path
95
94
  end
96
95
  end
97
96
  end
98
97
 
99
98
  def file_paths
100
- @file_paths ||= @table.column('file_path').uniq
99
+ @file_paths ||= @table.column("file_path").uniq
101
100
  end
102
101
 
103
102
  def file_tables
104
103
  @file_tables ||= make_table_hash(@columns)
105
104
  end
105
+
106
106
  def class_tables
107
107
  @class_tables ||= make_table_hash(@columns)
108
108
  end
109
+
109
110
  def method_tables
110
111
  @method_tables ||= make_table_hash(@columns)
111
112
  end
@@ -3,7 +3,6 @@
3
3
  end
4
4
  module MetricFu
5
5
  class Grouping
6
-
7
6
  def initialize(table, opts)
8
7
  column_name = opts.fetch(:by)
9
8
  hash = {}
@@ -20,6 +19,5 @@ module MetricFu
20
19
  yield value, rows
21
20
  end
22
21
  end
23
-
24
22
  end
25
23
  end
@@ -1,7 +1,6 @@
1
- MetricFu.metrics_require { 'hotspots/analysis/grouping' }
1
+ MetricFu.metrics_require { "hotspots/analysis/grouping" }
2
2
  module MetricFu
3
3
  class HotspotGroupings
4
-
5
4
  def initialize(table, opts)
6
5
  @table, @opts = table, opts
7
6
  end
@@ -9,6 +8,5 @@ module MetricFu
9
8
  def get_grouping
10
9
  MetricFu::Grouping.new(@table, @opts)
11
10
  end
12
-
13
11
  end
14
12
  end
@@ -1,9 +1,8 @@
1
- MetricFu.metrics_require { 'hotspots/analysis/groupings' }
1
+ MetricFu.metrics_require { "hotspots/analysis/groupings" }
2
2
  module MetricFu
3
3
  class HotspotProblems
4
-
5
4
  def initialize(sub_table)
6
- @grouping = group_by(sub_table, 'metric')
5
+ @grouping = group_by(sub_table, "metric")
7
6
  end
8
7
 
9
8
  def problems
@@ -14,9 +13,8 @@ module MetricFu
14
13
  problems
15
14
  end
16
15
 
17
- def group_by(sub_table, by = 'metric')
18
- MetricFu::HotspotGroupings.new(sub_table, :by => by).get_grouping
16
+ def group_by(sub_table, by = "metric")
17
+ MetricFu::HotspotGroupings.new(sub_table, by: by).get_grouping
19
18
  end
20
-
21
19
  end
22
20
  end
@@ -1,8 +1,8 @@
1
- MetricFu.lib_require { 'errors/analysis_error' }
2
- MetricFu.metrics_require { 'hotspots/analysis/problems' }
1
+ MetricFu.lib_require { "errors/analysis_error" }
2
+ MetricFu.metrics_require { "hotspots/analysis/problems" }
3
3
  module MetricFu
4
4
  class HotspotRankedProblemLocation
5
- MetricFu.data_structures_require { 'location' }
5
+ MetricFu.data_structures_require { "location" }
6
6
  attr_reader :sub_table, :granularity
7
7
  def initialize(sub_table, granularity)
8
8
  @sub_table = sub_table
@@ -11,8 +11,8 @@ module MetricFu
11
11
 
12
12
  def to_hash
13
13
  {
14
- 'location' => location.to_hash,
15
- 'details' => stringify_keys(problems),
14
+ "location" => location.to_hash,
15
+ "details" => stringify_keys(problems),
16
16
  }
17
17
  end
18
18
 
@@ -24,7 +24,6 @@ module MetricFu
24
24
  result
25
25
  end
26
26
 
27
-
28
27
  # @todo redo as item,value, options = {}
29
28
  # Note that the other option for 'details' is :detailed (this isn't
30
29
  # at all clear from this method itself
@@ -44,30 +43,36 @@ module MetricFu
44
43
  def file_path
45
44
  first_row.file_path
46
45
  end
46
+
47
47
  def class_name
48
48
  first_row.class_name
49
49
  end
50
+
50
51
  def method_name
51
52
  first_row.method_name
52
53
  end
54
+
53
55
  def file_location
54
56
  MetricFu::Location.get(file_path, nil, nil)
55
57
  end
58
+
56
59
  def method_location
57
60
  MetricFu::Location.get(file_path, class_name, method_name)
58
61
  end
62
+
59
63
  def class_location
60
64
  MetricFu::Location.get(file_path, class_name, nil)
61
65
  end
66
+
62
67
  def first_row
63
68
  assert_sub_table_has_data
64
69
  @first_row ||= sub_table[0]
65
70
  end
71
+
66
72
  def assert_sub_table_has_data
67
- if (sub_table.length==0)
68
- raise MetricFu::AnalysisError, "The #{item.to_s} '#{value.to_s}' does not have any rows in the analysis table"
73
+ if (sub_table.length == 0)
74
+ raise MetricFu::AnalysisError, "The #{item} '#{value}' does not have any rows in the analysis table"
69
75
  end
70
76
  end
71
-
72
77
  end
73
78
  end
@@ -1,4 +1,4 @@
1
- require 'forwardable'
1
+ require "forwardable"
2
2
  module MetricFu
3
3
  class Ranking
4
4
  extend Forwardable
@@ -13,8 +13,8 @@ module MetricFu
13
13
 
14
14
  def percentile(item)
15
15
  index = sorted_items.index(item)
16
- worse_item_count = (length - (index+1))
17
- worse_item_count.to_f/length
16
+ worse_item_count = (length - (index + 1))
17
+ worse_item_count.to_f / length
18
18
  end
19
19
 
20
20
  def_delegator :@items_to_score, :has_key?, :scored?
@@ -23,8 +23,7 @@ module MetricFu
23
23
  private
24
24
 
25
25
  def sorted_items
26
- @sorted_items ||= @items_to_score.sort_by {|item, score| -score}.map {|item, score| item}
26
+ @sorted_items ||= @items_to_score.sort_by { |_item, score| -score }.map { |item, _score| item }
27
27
  end
28
-
29
28
  end
30
29
  end
@@ -1,11 +1,10 @@
1
1
  MetricFu.metrics_require do
2
2
  [
3
- 'hotspots/analysis/ranking'
3
+ "hotspots/analysis/ranking"
4
4
  ]
5
5
  end
6
6
  module MetricFu
7
7
  class HotspotRankings
8
-
9
8
  def initialize(tool_tables)
10
9
  @tool_tables = tool_tables
11
10
  @file_ranking = MetricFu::Ranking.new
@@ -88,6 +87,5 @@ module MetricFu
88
87
  master_ranking[item] += analyzer.score(metric_ranking, item) # scaling? Do we just add in the raw score?
89
88
  end
90
89
  end
91
-
92
90
  end
93
91
  end
@@ -1,15 +1,14 @@
1
1
  module MetricFu
2
2
  class Record
3
-
4
3
  attr_reader :data
5
4
 
6
- def initialize(data, columns)
5
+ def initialize(data, _columns)
7
6
  @data = data
8
7
  end
9
8
 
10
9
  def method_missing(name, *args, &block)
11
10
  key = name.to_s
12
- if key == 'fetch'
11
+ if key == "fetch"
13
12
  @data.send(name, *args, &block)
14
13
  elsif @data.has_key?(key)
15
14
  @data[key]
@@ -19,7 +18,7 @@ module MetricFu
19
18
  end
20
19
 
21
20
  def []=(key, value)
22
- @data[key]=value
21
+ @data[key] = value
23
22
  end
24
23
 
25
24
  def [](key)
@@ -29,6 +28,5 @@ module MetricFu
29
28
  def has_key?(key)
30
29
  @data.has_key?(key)
31
30
  end
32
-
33
31
  end
34
32
  end
@@ -1,6 +1,5 @@
1
1
  module MetricFu
2
2
  module HotspotScoringStrategies
3
-
4
3
  module_function
5
4
 
6
5
  # per project score percentile
@@ -21,6 +20,5 @@ module MetricFu
21
20
  def average(scores)
22
21
  sum(scores).to_f / scores.size.to_f
23
22
  end
24
-
25
23
  end
26
24
  end
@@ -10,7 +10,7 @@ module MetricFu
10
10
  @rows = []
11
11
  @columns = opts.fetch(:column_names)
12
12
 
13
- @make_index = opts.fetch(:make_index) {true}
13
+ @make_index = opts.fetch(:make_index) { true }
14
14
  @metric_index = {}
15
15
  end
16
16
 
@@ -58,11 +58,10 @@ module MetricFu
58
58
  private
59
59
 
60
60
  def updated_key_index(record)
61
- if record.has_key?('metric')
62
- @metric_index[record.metric] ||= MetricFu::Table.new(:column_names => @columns, :make_index => false)
61
+ if record.has_key?("metric")
62
+ @metric_index[record.metric] ||= MetricFu::Table.new(column_names: @columns, make_index: false)
63
63
  @metric_index[record.metric] << record
64
64
  end
65
65
  end
66
-
67
66
  end
68
67
  end