metric_fu 4.4.0 → 4.4.1

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 (64) hide show
  1. checksums.yaml +4 -4
  2. data/HISTORY.md +12 -0
  3. data/Rakefile +0 -1
  4. data/bin/mf-roodi +2 -2
  5. data/checksum/metric_fu-4.4.0.gem.sha512 +1 -1
  6. data/gem_tasks/build.rake +24 -22
  7. data/lib/metric_fu/configuration.rb +0 -10
  8. data/lib/metric_fu/data_structures/line_numbers.rb +2 -0
  9. data/lib/metric_fu/initial_requires.rb +0 -1
  10. data/lib/metric_fu/metric.rb +1 -1
  11. data/lib/metric_fu/metrics/churn/churn_hotspot.rb +10 -11
  12. data/lib/metric_fu/metrics/flay/flay_hotspot.rb +7 -20
  13. data/lib/metric_fu/metrics/flog/flog_hotspot.rb +7 -14
  14. data/lib/metric_fu/metrics/generator.rb +0 -14
  15. data/lib/metric_fu/metrics/graph.rb +50 -15
  16. data/lib/metric_fu/metrics/hotspots/analysis/analyzed_problems.rb +21 -27
  17. data/lib/metric_fu/metrics/hotspots/analysis/analyzer_tables.rb +0 -6
  18. data/lib/metric_fu/metrics/hotspots/analysis/grouping.rb +2 -17
  19. data/lib/metric_fu/metrics/hotspots/analysis/groupings.rb +1 -9
  20. data/lib/metric_fu/metrics/hotspots/analysis/problems.rb +3 -7
  21. data/lib/metric_fu/metrics/hotspots/analysis/ranking.rb +3 -7
  22. data/lib/metric_fu/metrics/hotspots/analysis/rankings.rb +6 -6
  23. data/lib/metric_fu/metrics/hotspots/analysis/record.rb +3 -12
  24. data/lib/metric_fu/metrics/hotspots/analysis/scoring_strategies.rb +9 -14
  25. data/lib/metric_fu/metrics/hotspots/analysis/table.rb +3 -43
  26. data/lib/metric_fu/metrics/hotspots/hotspot.rb +59 -7
  27. data/lib/metric_fu/metrics/hotspots/hotspot_analyzer.rb +1 -36
  28. data/lib/metric_fu/metrics/hotspots/hotspots.rb +0 -4
  29. data/lib/metric_fu/metrics/rails_best_practices/init.rb +0 -1
  30. data/lib/metric_fu/metrics/rcov/rcov_hotspot.rb +6 -13
  31. data/lib/metric_fu/metrics/reek/reek_hotspot.rb +6 -87
  32. data/lib/metric_fu/metrics/roodi/roodi_hotspot.rb +7 -18
  33. data/lib/metric_fu/metrics/saikuro/saikuro.rb +0 -5
  34. data/lib/metric_fu/metrics/saikuro/saikuro_hotspot.rb +7 -14
  35. data/lib/metric_fu/metrics/stats/stats_hotspot.rb +7 -7
  36. data/lib/metric_fu/reporting/templates/awesome/awesome_template.rb +2 -1
  37. data/lib/metric_fu/utility.rb +20 -0
  38. data/lib/metric_fu/version.rb +1 -1
  39. data/metric_fu.gemspec +6 -6
  40. data/spec/metric_fu/configuration_spec.rb +2 -21
  41. data/spec/metric_fu/metrics/flog/flog_grapher_spec.rb +2 -2
  42. data/spec/metric_fu/metrics/generator_spec.rb +0 -14
  43. data/spec/metric_fu/metrics/graph_spec.rb +7 -6
  44. data/spec/metric_fu/metrics/hotspots/analysis/analyzed_problems_spec.rb +113 -0
  45. data/spec/metric_fu/metrics/hotspots/analysis/analyzer_tables_spec.rb +71 -0
  46. data/spec/metric_fu/metrics/hotspots/analysis/ranking_spec.rb +3 -12
  47. data/spec/metric_fu/metrics/hotspots/analysis/rankings_spec.rb +100 -0
  48. data/spec/metric_fu/metrics/hotspots/analysis/table_spec.rb +1 -30
  49. data/spec/metric_fu/metrics/hotspots/hotspot_analyzer_spec.rb +3 -442
  50. data/spec/metric_fu/metrics/rcov/rcov_spec.rb +2 -0
  51. data/spec/metric_fu/metrics/saikuro/saikuro_spec.rb +0 -11
  52. data/spec/resources/yml/hotspots/flog.yml +86 -0
  53. data/spec/resources/yml/hotspots/reek.yml +14 -0
  54. data/spec/resources/yml/hotspots/roodi.yml +13 -0
  55. data/spec/resources/yml/hotspots/saikuro.yml +27 -0
  56. data/spec/resources/yml/hotspots/several_metrics.yml +47 -0
  57. data/spec/resources/yml/hotspots/stats.yml +4 -0
  58. data/spec/resources/yml/hotspots/three_metrics_on_same_file.yml +36 -0
  59. data/spec/support/helper_methods.rb +13 -0
  60. metadata +62 -21
  61. data/lib/metric_fu/data_structures/careful_array.rb +0 -11
  62. data/lib/metric_fu/metrics/hotspots/analysis/code_issue.rb +0 -109
  63. data/lib/metric_fu/parser_ext.rb +0 -15
  64. data/lib/metric_fu/sexp_ext.rb +0 -11
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 741f0378823b8b42fce3ad9e4bc36b0312988660
4
- data.tar.gz: 66dce50c5876c8dc84d672e5ed5571e6e9854dd5
3
+ metadata.gz: 5b6391c40e351ab9265635b6b35f32662bbe450c
4
+ data.tar.gz: eb534c71875d84de4e477332a365de843ec7dfb3
5
5
  SHA512:
6
- metadata.gz: fc38e9dfd106e6f8c92d9f044a3ee1d9d192d6ae3de367b871efa70bc40bd7c67f877f6bc9628440c05094284eb333a635d96c9626e05f2e79f6be4aacd79b14
7
- data.tar.gz: 1487b7c82f5f8bf932bbd81b1b538fdd0bf03216fd32af2b3c3f294c7d83edd808cae889f827b1c4e0b788667593f2d0f9e159ce149beb7396b1cd29bd270267
6
+ metadata.gz: 7a9d4acd5a6b37a5ce18219ff9e8e363395e7f8c65f0fcaae138f0c6660172eefd49006371df55fd1cad2984e30cd91ccc64aaf6d7d1e170d1c37d2e6d3c9e12
7
+ data.tar.gz: c6dd298de619f6628ae7c5b46026bc7819ff38a9912f1bdd1e13da5e7b70fee82446397b3e6eb08fe602db6e3a7a78f395739874d95e357a6efda95e9eaa5acc
data/HISTORY.md CHANGED
@@ -10,6 +10,18 @@ As such, a _Feature_ would map to either major or minor. A _bug fix_ to a patch.
10
10
  * Fixes
11
11
  * Misc
12
12
 
13
+ ### MetricFu [4.4.1 / 2013-08-29](https://github.com/metricfu/metric_fu/compare/v4.4.0...v4.4.1)
14
+
15
+ * Features
16
+ * Fixes
17
+ * No longer consider an ampty sexp in LineNumbers an error. A file with only comments is empty of code. (Benjamin Fleischer)
18
+ * Prevent encoding errors when using syntax highlighting via coderay (Benjamin Fleischer #120, #131)
19
+ * Misc
20
+ * Update dependencies: cane, flay, flog, reek; switch from metric_fu-roodi to revived roodi (Benjamin Fleischer #130)
21
+ * Update to fully ruby_parser-compatible rails_best_practices (Benjamin Fleischer #133)
22
+ * Hotspots: remove legacy test code, reduce duplication (Benjamin Fleischer, #127, #77)
23
+ * Remove a lot of dead code (Benjamin Fleischer, #77)
24
+
13
25
  ### MetricFu 4.4.0 / 2013-08-15
14
26
 
15
27
  * Features
data/Rakefile CHANGED
@@ -6,7 +6,6 @@ Dir['./gem_tasks/*.rake'].each do |task|
6
6
  import(task)
7
7
  end
8
8
 
9
- # $LOAD_PATH << '.'
10
9
  begin
11
10
  require 'spec/rake/spectask'
12
11
  desc "Run all specs in spec directory"
data/bin/mf-roodi CHANGED
@@ -5,5 +5,5 @@ require 'rubygems'
5
5
  require 'metric_fu_requires'
6
6
 
7
7
  version = MetricFu::MetricVersion.roodi
8
- gem 'metric_fu-roodi', version
9
- load Gem.bin_path('metric_fu-roodi', 'metric_fu-roodi', version)
8
+ gem 'roodi', version
9
+ load Gem.bin_path('roodi', 'roodi', version)
@@ -1 +1 @@
1
- 1f9be27229b5a441bc4e4367d099f6f92641d994246b88f9a396fc8c99d832a00412fe7c9a5dc5078c9beecc8d77d575d9b9ab55b50ab7b0b7583130763369bf
1
+ c01694dc4a374806bd6cfaf5091808d223db1ea07a85d90a9749ed8e603c3abee283a36a6aacde81072b7c0ec2eec64f85d977caa6cd69687a532040a2137bd4
data/gem_tasks/build.rake CHANGED
@@ -2,37 +2,25 @@
2
2
  desc 'override bundler release task'
3
3
  task :release => ['build'] do
4
4
  STDOUT.puts "Running Bundler Release Task Override"
5
+ Rake::Task['checksum'].invoke
5
6
  end
6
7
  require 'bundler/gem_tasks'
7
8
 
8
9
  GEMSPEC = Bundler::GemHelper.gemspec
9
10
 
10
- # bundler-free alternative
11
- # packaging
12
- # https://github.com/YorickPeterse/ruby-lint/blob/master/Rakefile
13
- # require 'rubygems/package_task'
14
- # GEMSPEC = Gem::Specification.load('metric_fu.gemspec')
15
- #
16
- # Gem::PackageTask.new(GEMSPEC) do |pkg|
17
- # pkg.need_tar = false
18
- # pkg.need_zip = false
19
- # end
20
-
21
- # gem signing
22
- # desc 'Builds and signs a new Gem'
23
- # task :build => [:gem] do
24
- # name = "#{GEMSPEC.name}-#{GEMSPEC.version}.gem"
25
- # path = File.join(File.expand_path('../../pkg', __FILE__), name)
26
- #
27
- # sh("gem sign #{path}")
28
- #
29
- # Rake::Task['checksum'].invoke
30
- # end
11
+ desc 'Builds and signs a new Gem'
12
+ task :signed_build => [:build] do
13
+ name = "#{GEMSPEC.name}-#{GEMSPEC.version}.gem"
14
+ path = File.join(File.expand_path('../../pkg', __FILE__), name)
31
15
 
16
+ sh("gem sign #{path}")
17
+
18
+ Rake::Task['checksum'].invoke
19
+ end
32
20
  require 'digest/sha2'
33
21
 
34
22
  desc 'Creates a SHA512 checksum of the current version'
35
- task :checksum => ['build'] do
23
+ task :checksum do
36
24
  checksums = File.expand_path('../../checksum', __FILE__)
37
25
  name = "#{GEMSPEC.name}-#{GEMSPEC.version}.gem"
38
26
  path = File.join(File.expand_path('../../pkg', __FILE__), name)
@@ -44,3 +32,17 @@ task :checksum => ['build'] do
44
32
  handle.write(checksum)
45
33
  end
46
34
  end
35
+
36
+ desc 'Creates a Git tag for the current version'
37
+ task :tag do
38
+ version = MetricFu::VERSION
39
+
40
+ sh %Q{git tag -a -m "Version #{version}" -s #{version}}
41
+ end
42
+
43
+ desc 'Extracts TODO tags and the likes'
44
+ task :todo do
45
+ regex = %w{NOTE: FIXME: TODO: THINK: @todo}.join('|')
46
+
47
+ sh "ack '#{regex}' lib"
48
+ end
@@ -19,16 +19,6 @@ module MetricFu
19
19
  end
20
20
  end
21
21
 
22
- # TODO: Remove this method. It is really a test concern for identifying
23
- # metrics turned off for environmental reasons
24
- def self.mri_only_metrics
25
- if MetricFu.configuration.mri?
26
- []
27
- else
28
- [:cane, :flog, :rails_best_practices]
29
- end
30
- end
31
-
32
22
  # = Configuration
33
23
  #
34
24
  # The Configuration class, as it sounds, provides methods for
@@ -16,6 +16,8 @@ module MetricFu
16
16
  @locations = {}
17
17
  file_sexp = rp.parse(contents)
18
18
  case file_sexp[0]
19
+ when nil
20
+ mf_log "No ruby code found in #{file_path}"
19
21
  when :class
20
22
  process_class(file_sexp)
21
23
  when :module
@@ -8,7 +8,6 @@ require 'redcard'
8
8
  require 'multi_json'
9
9
 
10
10
  MetricFu.configure
11
- MetricFu.lib_require { 'parser_ext' }
12
11
  MetricFu.logging_require { 'mf_debugger' }
13
12
  include MfDebugger
14
13
  MfDebugger::Logger.debug_on = !!(ENV['MF_DEBUG'] =~ /true/i)
@@ -20,7 +20,7 @@ module MetricFu
20
20
  @libraries.each {|library| require(library) }
21
21
  self.activated = true
22
22
  rescue LoadError => e
23
- MetricFu.configuration.mf_log("#{name} metric not activated, #{e.message}")
23
+ mf_log "#{name} metric not activated, #{e.message}"
24
24
  end
25
25
 
26
26
  # @return metric name [Symbol]
@@ -1,5 +1,4 @@
1
- class ChurnHotspot < MetricFu::Hotspot
2
- include MetricFu::HotspotScoringStrategies
1
+ class MetricFu::ChurnHotspot < MetricFu::Hotspot
3
2
 
4
3
  COLUMNS = %w{times_changed}
5
4
 
@@ -11,15 +10,19 @@ class ChurnHotspot < MetricFu::Hotspot
11
10
  :churn
12
11
  end
13
12
 
14
- def map(row)
15
- MetricFu::HotspotScoringStrategies.present(row)
13
+ def map_strategy
14
+ :present
16
15
  end
17
16
 
18
- def reduce(scores)
19
- MetricFu::HotspotScoringStrategies.sum(scores)
17
+ def reduce_strategy
18
+ :sum
20
19
  end
21
20
 
22
- def score(metric_ranking, item)
21
+ def score_strategy
22
+ :calculate_score
23
+ end
24
+
25
+ def calculate_score(metric_ranking, item)
23
26
  flat_churn_score = 0.50
24
27
  metric_ranking.scored?(item) ? flat_churn_score : 0
25
28
  end
@@ -39,8 +42,4 @@ class ChurnHotspot < MetricFu::Hotspot
39
42
  "detected high level of churn (changed #{group[0].times_changed} times)"
40
43
  end
41
44
 
42
- def present_group_details(group)
43
- "detected high level of churn (changed #{group[0].times_changed} times)"
44
- end
45
-
46
45
  end
@@ -1,5 +1,4 @@
1
- class FlayHotspot < MetricFu::Hotspot
2
- include MetricFu::HotspotScoringStrategies
1
+ class MetricFu::FlayHotspot < MetricFu::Hotspot
3
2
 
4
3
  COLUMNS = %w{flay_reason flay_matching_reason}
5
4
 
@@ -11,16 +10,16 @@ class FlayHotspot < MetricFu::Hotspot
11
10
  :flay
12
11
  end
13
12
 
14
- def map(row)
15
- MetricFu::HotspotScoringStrategies.present(row)
13
+ def map_strategy
14
+ :present
16
15
  end
17
16
 
18
- def reduce(scores)
19
- MetricFu::HotspotScoringStrategies.sum(scores)
17
+ def reduce_strategy
18
+ :sum
20
19
  end
21
20
 
22
- def score(metric_ranking, item)
23
- MetricFu::HotspotScoringStrategies.percentile(metric_ranking, item)
21
+ def score_strategy
22
+ :percentile
24
23
  end
25
24
 
26
25
  def generate_records(data, table)
@@ -52,16 +51,4 @@ class FlayHotspot < MetricFu::Hotspot
52
51
  "found #{occurences} code duplications"
53
52
  end
54
53
 
55
- def present_group_details(group)
56
- occurences = group.size
57
- message = "found #{occurences} code duplications<br/>"
58
- group.each do |item|
59
- problem = item.data["flay_reason"]
60
- problem = problem.gsub(/^[0-9]*\)/,'')
61
- problem = problem.gsub(/files\:/,' <br>&nbsp;&nbsp;&nbsp;files:')
62
- message << "* #{problem}<br/>"
63
- end
64
- message
65
- end
66
-
67
54
  end
@@ -1,5 +1,4 @@
1
- class FlogHotspot < MetricFu::Hotspot
2
- include MetricFu::HotspotScoringStrategies
1
+ class MetricFu::FlogHotspot < MetricFu::Hotspot
3
2
 
4
3
  COLUMNS = %w{score}
5
4
 
@@ -11,16 +10,16 @@ class FlogHotspot < MetricFu::Hotspot
11
10
  :flog
12
11
  end
13
12
 
14
- def map(row)
15
- row.score
13
+ def map_strategy
14
+ :score
16
15
  end
17
16
 
18
- def reduce(scores)
19
- MetricFu::HotspotScoringStrategies.average(scores)
17
+ def reduce_strategy
18
+ :average
20
19
  end
21
20
 
22
- def score(metric_ranking, item)
23
- MetricFu::HotspotScoringStrategies.identity(metric_ranking, item)
21
+ def score_strategy
22
+ :identity
24
23
  end
25
24
 
26
25
  def generate_records(data, table)
@@ -46,10 +45,4 @@ class FlogHotspot < MetricFu::Hotspot
46
45
  "#{"average " if occurences > 1}complexity is %.1f" % complexity
47
46
  end
48
47
 
49
- def present_group_details(group)
50
- occurences = group.size
51
- complexity = get_mean(group.column("score"))
52
- "#{"average " if occurences > 1}complexity is %.1f" % complexity
53
- end
54
-
55
48
  end
@@ -54,20 +54,6 @@ module MetricFu
54
54
  @generators << subclass
55
55
  end
56
56
 
57
- # Creates a new generator and returns the output of the
58
- # #generate_result method. This is the typical way to
59
- # generate a new MetricFu result. For more information see
60
- # the #generate_result instance method.
61
- #
62
- # @params options Hash
63
- # A currently unused hash to configure the Generator
64
- #
65
- # @see generate_result
66
- def self.generate_result(options={})
67
- generator = self.new(options)
68
- generator.generate_result
69
- end
70
-
71
57
  # Provides the unqualified class name of an implemented concrete
72
58
  # class, as a string. For example:
73
59
  #
@@ -6,36 +6,71 @@ module MetricFu
6
6
 
7
7
  class Graph
8
8
 
9
- attr_accessor :clazz
9
+ attr_accessor :graphers
10
10
 
11
11
  def initialize
12
- self.clazz = []
12
+ self.graphers = []
13
13
  end
14
14
 
15
15
  def add(graph_type, graph_engine, output_directory = MetricFu::Io::FileSystem.directory('output_directory'))
16
- grapher_name = graph_type.to_s.gsub(/\/(.?)/) { "::#{$1.upcase}" }.gsub(/(?:^|_)(.)/) { $1.upcase } + graph_engine.to_s.capitalize + "Grapher"
17
- self.clazz.push MetricFu.const_get(grapher_name).new.tap{|g| g.output_directory = output_directory }
16
+ grapher = grapher_from_type_and_engine(graph_type, graph_engine)
17
+ self.graphers.push grapher.new.tap{|g| g.output_directory = output_directory }
18
+ rescue NameError => e
19
+ mf_log "#{e.message} called in MetricFu::Graph.add with #{graph_type}"
18
20
  end
19
21
 
20
22
 
21
23
  def generate
22
- return if self.clazz.empty?
24
+ return if self.graphers.empty?
23
25
  mf_log "Generating graphs"
24
- Dir[File.join(MetricFu::Io::FileSystem.directory('data_directory'), '*.yml')].sort.each do |metric_file|
25
- mf_log "Generating graphs for #{metric_file}"
26
- date_parts = year_month_day_from_filename(metric_file)
27
- metrics = YAML::load(File.open(metric_file))
28
-
29
- self.clazz.each do |grapher|
30
- grapher.get_metrics(metrics, "#{date_parts[:m]}/#{date_parts[:d]}")
31
- end
26
+ generate_graphs_for_files
27
+ graph!
28
+ rescue NameError => e
29
+ mf_log "#{e.message} called in MetricFu::Graph generate"
30
+ end
31
+
32
+ private
33
+
34
+ def grapher_from_type_and_engine(graph_type, graph_engine)
35
+ grapher_name = graph_type.to_s.gsub(/\/(.?)/) { "::#{$1.upcase}" }.gsub(/(?:^|_)(.)/) { $1.upcase } + graph_engine.to_s.capitalize + "Grapher"
36
+ MetricFu.const_get(grapher_name)
37
+ end
38
+ def metric_files
39
+ Dir[File.join(MetricFu::Io::FileSystem.directory('data_directory'), '*.yml')].sort
40
+ end
41
+
42
+ def generate_graphs_for_files
43
+ metric_files.each do |metric_file|
44
+ generate_graphs_for_file(metric_file)
45
+ end
46
+ end
47
+
48
+ def generate_graphs_for_file(metric_file)
49
+ mf_log "Generating graphs for #{metric_file}"
50
+ date_parts = year_month_day_from_filename(metric_file)
51
+ metrics = load_yaml_metric_file(metric_file)
52
+
53
+ build_graph(metrics, "#{date_parts[:m]}/#{date_parts[:d]}")
54
+ rescue NameError => e
55
+ mf_log "#{e.message} called in MetricFu::Graph.generate with #{metric_file}"
56
+ end
57
+
58
+ def load_yaml_metric_file(metric_file)
59
+ YAML.load(File.open(metric_file))
60
+ end
61
+
62
+ def build_graph(metrics, sortable_prefix)
63
+ self.graphers.each do |grapher|
64
+ grapher.get_metrics(metrics, sortable_prefix)
32
65
  end
33
- self.clazz.each do |grapher|
66
+ end
67
+
68
+ def graph!
69
+ self.graphers.each do |grapher|
34
70
  grapher.graph!
35
71
  end
36
72
  end
37
73
 
38
- private
39
74
  def year_month_day_from_filename(path_to_file_with_date)
40
75
  date = path_to_file_with_date.match(/\/(\d+).yml$/)[1]
41
76
  {:y => date[0..3].to_i, :m => date[4..5].to_i, :d => date[6..7].to_i}
@@ -7,41 +7,35 @@ module MetricFu
7
7
  @analyzer_tables = analyzer_tables
8
8
  end
9
9
  def worst_items
10
- num = nil
11
10
  worst_items = {}
12
- worst_items[:files] =
13
- @hotspot_rankings.worst_files(num).inject([]) do |array, worst_file|
14
- array <<
15
- {:location => self.location(:file, worst_file),
16
- :details => self.problems_with(:file, worst_file)}
17
- array
18
- end
19
- worst_items[:classes] = @hotspot_rankings.worst_classes(num).inject([]) do |array, class_name|
20
- location = self.location(:class, class_name)
21
- array <<
22
- {:location => location,
23
- :details => self.problems_with(:class, class_name)}
24
- array
25
- end
26
- worst_items[:methods] = @hotspot_rankings.worst_methods(num).inject([]) do |array, method_name|
27
- location = self.location(:method, method_name)
28
- array <<
29
- {:location => location,
30
- :details => self.problems_with(:method, method_name)}
31
- array
32
- end
11
+ worst_items[:files] = worst(@hotspot_rankings.worst_files, :file)
12
+ worst_items[:classes] = worst(@hotspot_rankings.worst_classes, :class)
13
+ worst_items[:methods] = worst(@hotspot_rankings.worst_methods, :method)
33
14
  worst_items
34
15
  end
16
+
35
17
  private
36
- #todo redo as item,value, options = {}
18
+
19
+ # @param rankings [Array<MetricFu::HotspotRankings>]
20
+ # @param granularity [Symbol] one of :class, :method, :file
21
+ def worst(rankings,granularity)
22
+ rankings.map do |ranked_item_name|
23
+ location = location(granularity, ranked_item_name)
24
+ details = problems_with(granularity, ranked_item_name)
25
+ {:location => location, :details => details}
26
+ end
27
+ end
28
+
29
+ # @todo redo as item,value, options = {}
37
30
  # Note that the other option for 'details' is :detailed (this isn't
38
31
  # at all clear from this method itself
39
- def problems_with(item, value, details = :summary, exclude_details = [])
32
+ def problems_with(item, value)
40
33
  sub_table = get_sub_table(item, value)
41
34
  #grouping = Ruport::Data::Grouping.new(sub_table, :by => 'metric')
42
35
  grouping = get_grouping(sub_table, :by => 'metric')
43
- MetricFu::HotspotProblems.new(grouping, details, exclude_details).problems
36
+ MetricFu::HotspotProblems.new(grouping).problems
44
37
  end
38
+
45
39
  def location(item, value)
46
40
  sub_table = get_sub_table(item, value)
47
41
  assert_sub_table_has_data(item, sub_table, value)
@@ -64,14 +58,14 @@ module MetricFu
64
58
  end
65
59
  end
66
60
 
67
- # just for testing
68
- public :location, :problems_with
69
61
  def get_sub_table(item, value)
70
62
  tables = @analyzer_tables.tables_for(item)
71
63
  tables[value]
72
64
  end
65
+
73
66
  def get_grouping(table, opts)
74
67
  MetricFu::HotspotGroupings.new(table, opts).get_grouping
75
68
  end
69
+
76
70
  end
77
71
  end