class MetricFu::HotspotRankings
Public Class Methods
new(tool_tables)
click to toggle source
# File lib/metric_fu/metrics/hotspots/analysis/rankings.rb, line 8 def initialize(tool_tables) @tool_tables = tool_tables @file_ranking = MetricFu::Ranking.new @class_ranking = MetricFu::Ranking.new @method_ranking = MetricFu::Ranking.new end
Public Instance Methods
calculate_scores(tool_analyzers, granularities)
click to toggle source
# File lib/metric_fu/metrics/hotspots/analysis/rankings.rb, line 15 def calculate_scores(tool_analyzers, granularities) tool_analyzers.each do |analyzer| calculate_scores_by_granularities(analyzer, granularities) end end
worst_classes()
click to toggle source
# File lib/metric_fu/metrics/hotspots/analysis/rankings.rb, line 26 def worst_classes @class_ranking.delete(nil) @class_ranking.top end
worst_files()
click to toggle source
# File lib/metric_fu/metrics/hotspots/analysis/rankings.rb, line 31 def worst_files @file_ranking.delete(nil) @file_ranking.top end
worst_methods()
click to toggle source
# File lib/metric_fu/metrics/hotspots/analysis/rankings.rb, line 21 def worst_methods @method_ranking.delete(nil) @method_ranking.top end
Private Instance Methods
add_to_master_ranking(master_ranking, metric_ranking, analyzer)
click to toggle source
# File lib/metric_fu/metrics/hotspots/analysis/rankings.rb, line 84 def add_to_master_ranking(master_ranking, metric_ranking, analyzer) metric_ranking.each do |item, _| master_ranking[item] ||= 0 master_ranking[item] += analyzer.score(metric_ranking, item) # scaling? Do we just add in the raw score? end end
calculate_metric_scores(granularity, analyzer)
click to toggle source
CALCULATES METRIC HOTSPOT SCORES / RANKINGS PER map/reduce in HOTSPOT subclasses
# File lib/metric_fu/metrics/hotspots/analysis/rankings.rb, line 55 def calculate_metric_scores(granularity, analyzer) metric_ranking = MetricFu::Ranking.new metric_violations = @tool_tables[analyzer.name] metric_violations.each do |row| location = row[granularity] metric_ranking[location] ||= [] metric_ranking[location] << analyzer.map(row) end metric_ranking.each do |item, scores| metric_ranking[item] = analyzer.reduce(scores) end metric_ranking end
calculate_score_for_granularity(analyzer, granularity)
click to toggle source
# File lib/metric_fu/metrics/hotspots/analysis/rankings.rb, line 44 def calculate_score_for_granularity(analyzer, granularity) metric_ranking = calculate_metric_scores(granularity, analyzer) add_to_master_ranking( ranking(granularity), metric_ranking, analyzer ) end
calculate_scores_by_granularities(analyzer, granularities)
click to toggle source
# File lib/metric_fu/metrics/hotspots/analysis/rankings.rb, line 38 def calculate_scores_by_granularities(analyzer, granularities) granularities.each do |granularity| calculate_score_for_granularity(analyzer, granularity) end end
ranking(column_name)
click to toggle source
# File lib/metric_fu/metrics/hotspots/analysis/rankings.rb, line 71 def ranking(column_name) case column_name when "file_path" @file_ranking when "class_name" @class_ranking when "method_name" @method_ranking else raise ArgumentError, "Invalid column name #{column_name}" end end