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.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/.rubocop.yml +15 -0
- data/.rubocop_todo.yml +69 -0
- data/.travis.yml +0 -1
- data/CONTRIBUTORS +1 -1
- data/Gemfile +23 -20
- data/Guardfile +9 -9
- data/HISTORY.md +10 -1
- data/checksum/metric_fu-4.11.3.gem.sha512 +1 -0
- data/config/rubocop.yml +269 -0
- data/gem_tasks/rubocop.rake +10 -0
- data/lib/metric_fu.rb +11 -9
- data/lib/metric_fu/calculate.rb +0 -1
- data/lib/metric_fu/cli/client.rb +6 -6
- data/lib/metric_fu/cli/helper.rb +22 -13
- data/lib/metric_fu/cli/parser.rb +14 -18
- data/lib/metric_fu/configuration.rb +7 -11
- data/lib/metric_fu/constantize.rb +4 -4
- data/lib/metric_fu/data_structures/line_numbers.rb +10 -11
- data/lib/metric_fu/data_structures/location.rb +12 -14
- data/lib/metric_fu/data_structures/sexp_node.rb +31 -13
- data/lib/metric_fu/environment.rb +29 -31
- data/lib/metric_fu/formatter.rb +4 -6
- data/lib/metric_fu/formatter/html.rb +13 -13
- data/lib/metric_fu/formatter/syntax.rb +5 -7
- data/lib/metric_fu/formatter/yaml.rb +1 -1
- data/lib/metric_fu/gem_run.rb +13 -15
- data/lib/metric_fu/gem_version.rb +9 -11
- data/lib/metric_fu/generator.rb +5 -8
- data/lib/metric_fu/io.rb +13 -15
- data/lib/metric_fu/loader.rb +17 -18
- data/lib/metric_fu/logger.rb +15 -18
- data/lib/metric_fu/logging/mf_debugger.rb +4 -4
- data/lib/metric_fu/metric.rb +11 -12
- data/lib/metric_fu/metrics/cane/generator.rb +10 -9
- data/lib/metric_fu/metrics/cane/grapher.rb +5 -7
- data/lib/metric_fu/metrics/cane/metric.rb +6 -8
- data/lib/metric_fu/metrics/cane/report.html.erb +3 -3
- data/lib/metric_fu/metrics/cane/violations.rb +6 -6
- data/lib/metric_fu/metrics/churn/generator.rb +2 -6
- data/lib/metric_fu/metrics/churn/hotspot.rb +1 -3
- data/lib/metric_fu/metrics/churn/metric.rb +5 -7
- data/lib/metric_fu/metrics/flay/generator.rb +7 -11
- data/lib/metric_fu/metrics/flay/grapher.rb +5 -6
- data/lib/metric_fu/metrics/flay/hotspot.rb +5 -7
- data/lib/metric_fu/metrics/flay/metric.rb +5 -7
- data/lib/metric_fu/metrics/flog/generator.rb +22 -23
- data/lib/metric_fu/metrics/flog/grapher.rb +11 -11
- data/lib/metric_fu/metrics/flog/hotspot.rb +3 -5
- data/lib/metric_fu/metrics/flog/metric.rb +3 -5
- data/lib/metric_fu/metrics/hotspots/analysis/analyzed_problems.rb +0 -1
- data/lib/metric_fu/metrics/hotspots/analysis/analyzer_tables.rb +19 -18
- data/lib/metric_fu/metrics/hotspots/analysis/grouping.rb +0 -2
- data/lib/metric_fu/metrics/hotspots/analysis/groupings.rb +1 -3
- data/lib/metric_fu/metrics/hotspots/analysis/problems.rb +4 -6
- data/lib/metric_fu/metrics/hotspots/analysis/ranked_problem_location.rb +14 -9
- data/lib/metric_fu/metrics/hotspots/analysis/ranking.rb +4 -5
- data/lib/metric_fu/metrics/hotspots/analysis/rankings.rb +1 -3
- data/lib/metric_fu/metrics/hotspots/analysis/record.rb +3 -5
- data/lib/metric_fu/metrics/hotspots/analysis/scoring_strategies.rb +0 -2
- data/lib/metric_fu/metrics/hotspots/analysis/table.rb +3 -4
- data/lib/metric_fu/metrics/hotspots/generator.rb +3 -6
- data/lib/metric_fu/metrics/hotspots/hotspot.rb +13 -13
- data/lib/metric_fu/metrics/hotspots/hotspot_analyzer.rb +5 -8
- data/lib/metric_fu/metrics/hotspots/metric.rb +1 -3
- data/lib/metric_fu/metrics/hotspots/report.html.erb +1 -1
- data/lib/metric_fu/metrics/rails_best_practices/generator.rb +10 -12
- data/lib/metric_fu/metrics/rails_best_practices/grapher.rb +5 -6
- data/lib/metric_fu/metrics/rails_best_practices/metric.rb +1 -3
- data/lib/metric_fu/metrics/rcov/external_client.rb +1 -3
- data/lib/metric_fu/metrics/rcov/generator.rb +13 -15
- data/lib/metric_fu/metrics/rcov/grapher.rb +6 -7
- data/lib/metric_fu/metrics/rcov/hotspot.rb +5 -7
- data/lib/metric_fu/metrics/rcov/metric.rb +5 -7
- data/lib/metric_fu/metrics/rcov/rcov_format_coverage.rb +16 -55
- data/lib/metric_fu/metrics/rcov/rcov_line.rb +48 -0
- data/lib/metric_fu/metrics/rcov/report.html.erb +2 -2
- data/lib/metric_fu/metrics/rcov/simplecov_formatter.rb +10 -11
- data/lib/metric_fu/metrics/reek/generator.rb +22 -23
- data/lib/metric_fu/metrics/reek/grapher.rb +5 -6
- data/lib/metric_fu/metrics/reek/hotspot.rb +5 -7
- data/lib/metric_fu/metrics/reek/metric.rb +2 -4
- data/lib/metric_fu/metrics/roodi/generator.rb +9 -10
- data/lib/metric_fu/metrics/roodi/grapher.rb +5 -6
- data/lib/metric_fu/metrics/roodi/hotspot.rb +1 -3
- data/lib/metric_fu/metrics/roodi/metric.rb +2 -4
- data/lib/metric_fu/metrics/saikuro/generator.rb +23 -27
- data/lib/metric_fu/metrics/saikuro/hotspot.rb +1 -3
- data/lib/metric_fu/metrics/saikuro/metric.rb +7 -8
- data/lib/metric_fu/metrics/saikuro/parsing_element.rb +6 -8
- data/lib/metric_fu/metrics/saikuro/report.html.erb +1 -1
- data/lib/metric_fu/metrics/saikuro/scratch_file.rb +24 -29
- data/lib/metric_fu/metrics/stats/generator.rb +9 -12
- data/lib/metric_fu/metrics/stats/grapher.rb +8 -9
- data/lib/metric_fu/metrics/stats/hotspot.rb +1 -3
- data/lib/metric_fu/metrics/stats/metric.rb +3 -5
- data/lib/metric_fu/reporter.rb +1 -1
- data/lib/metric_fu/reporting/graphs/graph.rb +8 -12
- data/lib/metric_fu/reporting/graphs/grapher.rb +7 -9
- data/lib/metric_fu/reporting/result.rb +0 -3
- data/lib/metric_fu/run.rb +12 -3
- data/lib/metric_fu/tasks/metric_fu.rake +8 -8
- data/lib/metric_fu/templates/configuration.rb +2 -5
- data/lib/metric_fu/templates/metrics_template.rb +19 -19
- data/lib/metric_fu/templates/report.rb +5 -8
- data/lib/metric_fu/templates/template.rb +20 -24
- data/lib/metric_fu/utility.rb +7 -8
- data/lib/metric_fu/version.rb +1 -1
- data/metric_fu.gemspec +31 -32
- data/spec/cli/helper_spec.rb +7 -14
- data/spec/dummy/lib/bad_encoding.rb +1 -1
- data/spec/fixtures/coverage-153.rb +2 -2
- data/spec/fixtures/coverage.rb +2 -2
- data/spec/metric_fu/calculate_spec.rb +3 -3
- data/spec/metric_fu/configuration_spec.rb +70 -82
- data/spec/metric_fu/data_structures/line_numbers_spec.rb +3 -5
- data/spec/metric_fu/data_structures/location_spec.rb +13 -31
- data/spec/metric_fu/formatter/configuration_spec.rb +11 -13
- data/spec/metric_fu/formatter/html_spec.rb +21 -28
- data/spec/metric_fu/formatter/yaml_spec.rb +9 -17
- data/spec/metric_fu/formatter_spec.rb +6 -6
- data/spec/metric_fu/gem_version_spec.rb +3 -5
- data/spec/metric_fu/generator_spec.rb +28 -38
- data/spec/metric_fu/loader_spec.rb +1 -3
- data/spec/metric_fu/metric_spec.rb +17 -21
- data/spec/metric_fu/metrics/cane/configuration_spec.rb +8 -8
- data/spec/metric_fu/metrics/cane/generator_spec.rb +26 -29
- data/spec/metric_fu/metrics/churn/configuration_spec.rb +6 -8
- data/spec/metric_fu/metrics/churn/generator_spec.rb +6 -11
- data/spec/metric_fu/metrics/flay/configuration_spec.rb +6 -8
- data/spec/metric_fu/metrics/flay/generator_spec.rb +36 -37
- data/spec/metric_fu/metrics/flay/grapher_spec.rb +2 -2
- data/spec/metric_fu/metrics/flog/configuration_spec.rb +11 -13
- data/spec/metric_fu/metrics/flog/generator_spec.rb +29 -31
- data/spec/metric_fu/metrics/flog/grapher_spec.rb +8 -10
- data/spec/metric_fu/metrics/hotspots/analysis/analyzed_problems_spec.rb +18 -24
- data/spec/metric_fu/metrics/hotspots/analysis/analyzer_tables_spec.rb +12 -17
- data/spec/metric_fu/metrics/hotspots/analysis/ranking_spec.rb +2 -6
- data/spec/metric_fu/metrics/hotspots/analysis/rankings_spec.rb +5 -14
- data/spec/metric_fu/metrics/hotspots/analysis/table_spec.rb +1 -3
- data/spec/metric_fu/metrics/hotspots/generator_spec.rb +6 -8
- data/spec/metric_fu/metrics/hotspots/hotspot_analyzer_spec.rb +1 -3
- data/spec/metric_fu/metrics/hotspots/hotspot_spec.rb +4 -5
- data/spec/metric_fu/metrics/rails_best_practices/configuration_spec.rb +6 -10
- data/spec/metric_fu/metrics/rails_best_practices/generator_spec.rb +2 -3
- data/spec/metric_fu/metrics/rails_best_practices/grapher_spec.rb +3 -3
- data/spec/metric_fu/metrics/rcov/configuration_spec.rb +20 -22
- data/spec/metric_fu/metrics/rcov/generator_spec.rb +6 -10
- data/spec/metric_fu/metrics/rcov/grapher_spec.rb +2 -2
- data/spec/metric_fu/metrics/rcov/hotspot_spec.rb +8 -8
- data/spec/metric_fu/metrics/rcov/rcov_line_spec.rb +89 -0
- data/spec/metric_fu/metrics/rcov/simplecov_formatter_spec.rb +31 -33
- data/spec/metric_fu/metrics/reek/configuration_spec.rb +6 -6
- data/spec/metric_fu/metrics/reek/generator_spec.rb +19 -20
- data/spec/metric_fu/metrics/reek/grapher_spec.rb +4 -4
- data/spec/metric_fu/metrics/roodi/configuration_spec.rb +7 -9
- data/spec/metric_fu/metrics/roodi/generator_spec.rb +3 -3
- data/spec/metric_fu/metrics/roodi/grapher_spec.rb +2 -2
- data/spec/metric_fu/metrics/saikuro/configuration_spec.rb +18 -19
- data/spec/metric_fu/metrics/saikuro/generator_spec.rb +7 -7
- data/spec/metric_fu/metrics/stats/generator_spec.rb +9 -9
- data/spec/metric_fu/metrics/stats/grapher_spec.rb +2 -2
- data/spec/metric_fu/reporter_spec.rb +3 -4
- data/spec/metric_fu/reporting/graphs/graph_spec.rb +1 -4
- data/spec/metric_fu/reporting/graphs/grapher_spec.rb +5 -5
- data/spec/metric_fu/reporting/result_spec.rb +9 -11
- data/spec/metric_fu/run_spec.rb +18 -32
- data/spec/metric_fu/templates/configuration_spec.rb +28 -34
- data/spec/metric_fu/templates/metrics_template_spec.rb +11 -0
- data/spec/metric_fu/templates/report_spec.rb +4 -4
- data/spec/metric_fu/templates/template_spec.rb +62 -48
- data/spec/metric_fu/utility_spec.rb +2 -2
- data/spec/metric_fu_spec.rb +5 -7
- data/spec/shared/configured.rb +9 -11
- data/spec/shared/test_coverage.rb +5 -9
- data/spec/spec_helper.rb +9 -9
- data/spec/support/deferred_garbaged_collection.rb +1 -2
- data/spec/support/matcher_create_file.rb +2 -4
- data/spec/support/matcher_create_files.rb +2 -4
- data/spec/support/suite.rb +3 -3
- data/spec/support/test_fixtures.rb +5 -7
- data/spec/support/timeout.rb +1 -1
- data/spec/support/usage_test.rb +23 -24
- data/spec/usage_test_spec.rb +18 -20
- metadata +12 -2
- metadata.gz.sig +0 -0
@@ -1,13 +1,11 @@
|
|
1
|
-
MetricFu.metrics_require {
|
1
|
+
MetricFu.metrics_require { "hotspots/hotspot_analyzer" }
|
2
2
|
module MetricFu
|
3
|
-
|
4
3
|
class HotspotsGenerator < Generator
|
5
|
-
|
6
4
|
def self.metric
|
7
5
|
:hotspots
|
8
6
|
end
|
9
7
|
|
10
|
-
def initialize(options={})
|
8
|
+
def initialize(options = {})
|
11
9
|
MetricFu::Metric.enabled_metrics.each do |metric|
|
12
10
|
require_hotspot(metric.name)
|
13
11
|
end
|
@@ -24,7 +22,7 @@ module MetricFu
|
|
24
22
|
end
|
25
23
|
|
26
24
|
def to_h
|
27
|
-
result = {:
|
25
|
+
result = { hotspots: {} }
|
28
26
|
@hotspots.each do |granularity, hotspots|
|
29
27
|
result[:hotspots][granularity.to_s] = hotspots.map(&:to_hash)
|
30
28
|
end
|
@@ -39,5 +37,4 @@ module MetricFu
|
|
39
37
|
mf_debug "*** No hotspot for #{metric_name}"
|
40
38
|
end
|
41
39
|
end
|
42
|
-
|
43
40
|
end
|
@@ -1,10 +1,10 @@
|
|
1
|
-
MetricFu.lib_require {
|
2
|
-
MetricFu.metrics_require {
|
1
|
+
MetricFu.lib_require { "errors/analysis_error" }
|
2
|
+
MetricFu.metrics_require { "hotspots/analysis/scoring_strategies" }
|
3
3
|
|
4
4
|
module MetricFu
|
5
5
|
class Hotspot
|
6
6
|
def self.metric
|
7
|
-
|
7
|
+
name.split("::")[-1].split("Hotspot")[0].downcase.to_sym
|
8
8
|
end
|
9
9
|
@analyzers = {}
|
10
10
|
def self.analyzers
|
@@ -31,8 +31,8 @@ module MetricFu
|
|
31
31
|
|
32
32
|
def mapping_strategies
|
33
33
|
{
|
34
|
-
:
|
35
|
-
:
|
34
|
+
present: 1,
|
35
|
+
absent: 0,
|
36
36
|
}
|
37
37
|
end
|
38
38
|
|
@@ -42,9 +42,9 @@ module MetricFu
|
|
42
42
|
|
43
43
|
def reduce(scores)
|
44
44
|
{
|
45
|
-
:
|
46
|
-
:
|
47
|
-
:
|
45
|
+
average: MetricFu::HotspotScoringStrategies.average(scores),
|
46
|
+
sum: MetricFu::HotspotScoringStrategies.sum(scores),
|
47
|
+
absent: 0,
|
48
48
|
}.fetch(reduce_strategy) do
|
49
49
|
fail "#{reduce_strategy} not a known reduce strategy"
|
50
50
|
end
|
@@ -57,9 +57,9 @@ module MetricFu
|
|
57
57
|
# @return [Integer]
|
58
58
|
def score(metric_ranking, item)
|
59
59
|
{
|
60
|
-
:
|
61
|
-
:
|
62
|
-
:
|
60
|
+
identity: MetricFu::HotspotScoringStrategies.identity(metric_ranking, item),
|
61
|
+
percentile: MetricFu::HotspotScoringStrategies.percentile(metric_ranking, item),
|
62
|
+
absent: 0,
|
63
63
|
}.fetch(score_strategy) { method(score_strategy).call(metric_ranking, item) }
|
64
64
|
end
|
65
65
|
|
@@ -71,12 +71,12 @@ module MetricFu
|
|
71
71
|
# 'metric', etc.
|
72
72
|
# and appends the hash to the table param
|
73
73
|
# Has no return value
|
74
|
-
def generate_records(
|
74
|
+
def generate_records(_data, _table)
|
75
75
|
not_implemented
|
76
76
|
end
|
77
77
|
|
78
78
|
# @return [String] description result
|
79
|
-
def present_group(
|
79
|
+
def present_group(_group)
|
80
80
|
not_implemented
|
81
81
|
end
|
82
82
|
|
@@ -1,16 +1,15 @@
|
|
1
|
-
require
|
1
|
+
require "yaml"
|
2
2
|
MetricFu.metrics_require do
|
3
3
|
[
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
4
|
+
"hotspots/hotspot",
|
5
|
+
"hotspots/analysis/analyzer_tables",
|
6
|
+
"hotspots/analysis/analyzed_problems",
|
7
|
+
"hotspots/analysis/rankings"
|
8
8
|
]
|
9
9
|
end
|
10
10
|
|
11
11
|
module MetricFu
|
12
12
|
class HotspotAnalyzer
|
13
|
-
|
14
13
|
COMMON_COLUMNS = %w{metric}
|
15
14
|
GRANULARITIES = %w{file_path class_name method_name}
|
16
15
|
|
@@ -58,7 +57,5 @@ module MetricFu
|
|
58
57
|
# TODO does it not need to return something here?
|
59
58
|
analyzed_problems
|
60
59
|
end
|
61
|
-
|
62
|
-
|
63
60
|
end
|
64
61
|
end
|
@@ -1,13 +1,12 @@
|
|
1
1
|
module MetricFu
|
2
2
|
class MetricHotspots < Metric
|
3
|
-
|
4
3
|
def name
|
5
4
|
:hotspots
|
6
5
|
end
|
7
6
|
|
8
7
|
# TODO remove explicit Churn dependency
|
9
8
|
def default_run_options
|
10
|
-
{ :
|
9
|
+
{ start_date: "1 year ago", minimum_churn_count: 10 }
|
11
10
|
end
|
12
11
|
|
13
12
|
def has_graph?
|
@@ -17,6 +16,5 @@ module MetricFu
|
|
17
16
|
def enable
|
18
17
|
super
|
19
18
|
end
|
20
|
-
|
21
19
|
end
|
22
20
|
end
|
@@ -36,7 +36,7 @@
|
|
36
36
|
</b>
|
37
37
|
<% unless per_file_data[file].empty? %>
|
38
38
|
<small>«
|
39
|
-
<b><a href="<%= file
|
39
|
+
<b><a href="<%= html_filename(file) %><%= (line.nil? ? '' : "#line#{line}") %>">annotate</a></b>
|
40
40
|
»</small>
|
41
41
|
<% end %>
|
42
42
|
<br/><br/>
|
@@ -1,14 +1,13 @@
|
|
1
1
|
module MetricFu
|
2
2
|
class RailsBestPracticesGenerator < Generator
|
3
|
-
|
4
3
|
def self.metric
|
5
4
|
:rails_best_practices
|
6
5
|
end
|
7
6
|
|
8
7
|
def emit
|
9
8
|
mf_debug "** Rails Best Practices"
|
10
|
-
path =
|
11
|
-
analyzer = ::RailsBestPractices::Analyzer.new(path,
|
9
|
+
path = "."
|
10
|
+
analyzer = ::RailsBestPractices::Analyzer.new(path, "silent" => true)
|
12
11
|
analyzer.analyze
|
13
12
|
@output = analyzer.errors
|
14
13
|
end
|
@@ -16,28 +15,27 @@ module MetricFu
|
|
16
15
|
def analyze
|
17
16
|
@problems = @output.collect do |problem|
|
18
17
|
{
|
19
|
-
:
|
20
|
-
:
|
21
|
-
:
|
22
|
-
:
|
18
|
+
file: problem.filename,
|
19
|
+
line: problem.line_number,
|
20
|
+
problem: problem.message,
|
21
|
+
url: problem.url
|
23
22
|
}
|
24
23
|
end
|
25
24
|
total = ["Found #{@problems.count} errors."]
|
26
|
-
@rails_best_practices_results = {:
|
25
|
+
@rails_best_practices_results = { total: total, problems: @problems }
|
27
26
|
end
|
28
27
|
|
29
28
|
def to_h
|
30
|
-
{:
|
29
|
+
{ rails_best_practices: @rails_best_practices_results }
|
31
30
|
end
|
32
31
|
|
33
32
|
def per_file_info(out)
|
34
33
|
@rails_best_practices_results[:problems].each do |problem|
|
35
|
-
next if problem[:file] ==
|
36
|
-
|
34
|
+
next if problem[:file] == "" || problem[:problem].nil?
|
37
35
|
|
38
36
|
lines = problem[:line].split(/\s*,\s*/)
|
39
37
|
lines.each do |line|
|
40
|
-
out[problem[:file]][line] << {:
|
38
|
+
out[problem[:file]][line] << { type: :rails_best_practices, description: problem[:problem] }
|
41
39
|
end
|
42
40
|
end
|
43
41
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
MetricFu.reporting_require {
|
1
|
+
MetricFu.reporting_require { "graphs/grapher" }
|
2
2
|
module MetricFu
|
3
3
|
class RailsBestPracticesGrapher < Grapher
|
4
4
|
attr_accessor :rails_best_practices_count, :labels
|
@@ -17,23 +17,22 @@ module MetricFu
|
|
17
17
|
if metrics && metrics[:rails_best_practices]
|
18
18
|
size = (metrics[:rails_best_practices][:problems] || []).size
|
19
19
|
@rails_best_practices_count.push(size)
|
20
|
-
@labels.update(
|
20
|
+
@labels.update(@labels.size => date)
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
24
24
|
def title
|
25
|
-
|
25
|
+
"Rails Best Practices: design problems"
|
26
26
|
end
|
27
27
|
|
28
28
|
def data
|
29
29
|
[
|
30
|
-
[
|
30
|
+
["rails_best_practices", @rails_best_practices_count.join(",")]
|
31
31
|
]
|
32
32
|
end
|
33
33
|
|
34
34
|
def output_filename
|
35
|
-
|
35
|
+
"rails_best_practices.js"
|
36
36
|
end
|
37
|
-
|
38
37
|
end
|
39
38
|
end
|
@@ -1,6 +1,5 @@
|
|
1
1
|
module MetricFu
|
2
2
|
class MetricRailsBestPractices < Metric
|
3
|
-
|
4
3
|
def name
|
5
4
|
:rails_best_practices
|
6
5
|
end
|
@@ -22,9 +21,8 @@ module MetricFu
|
|
22
21
|
end
|
23
22
|
|
24
23
|
def activate
|
25
|
-
activate_library(
|
24
|
+
activate_library("rails_best_practices")
|
26
25
|
super
|
27
26
|
end
|
28
|
-
|
29
27
|
end
|
30
28
|
end
|
@@ -1,7 +1,6 @@
|
|
1
1
|
# Reads and writes external coverage files as BINARY
|
2
2
|
module MetricFu
|
3
3
|
class RCovTestCoverageClient
|
4
|
-
|
5
4
|
def initialize(coverage_file)
|
6
5
|
@file_path = Pathname(coverage_file)
|
7
6
|
@file_path.dirname.mkpath
|
@@ -17,8 +16,7 @@ module MetricFu
|
|
17
16
|
end
|
18
17
|
|
19
18
|
def dump(payload)
|
20
|
-
File.open(@file_path,
|
19
|
+
File.open(@file_path, "wb") { |file| file.write(payload) }
|
21
20
|
end
|
22
|
-
|
23
21
|
end
|
24
22
|
end
|
@@ -1,13 +1,12 @@
|
|
1
|
-
MetricFu.lib_require {
|
2
|
-
MetricFu.lib_require {
|
3
|
-
MetricFu.data_structures_require {
|
4
|
-
require_relative
|
5
|
-
require_relative
|
1
|
+
MetricFu.lib_require { "utility" }
|
2
|
+
MetricFu.lib_require { "calculate" }
|
3
|
+
MetricFu.data_structures_require { "line_numbers" }
|
4
|
+
require_relative "rcov_format_coverage"
|
5
|
+
require_relative "rcov_line"
|
6
|
+
require_relative "external_client"
|
6
7
|
|
7
8
|
module MetricFu
|
8
|
-
|
9
9
|
class RcovGenerator < MetricFu::Generator
|
10
|
-
|
11
10
|
def self.metric
|
12
11
|
:rcov
|
13
12
|
end
|
@@ -29,16 +28,16 @@ module MetricFu
|
|
29
28
|
end
|
30
29
|
|
31
30
|
def reset_output_location
|
32
|
-
MetricFu::Utility.rm_rf(metric_directory, :
|
31
|
+
MetricFu::Utility.rm_rf(metric_directory, verbose: false)
|
33
32
|
MetricFu::Utility.mkdir_p(metric_directory)
|
34
33
|
end
|
35
34
|
|
36
35
|
def default_command
|
37
|
-
require
|
36
|
+
require "rake"
|
38
37
|
reset_output_location
|
39
|
-
test_files = FileList[*options[:test_files]].join(
|
40
|
-
rcov_opts = options[:rcov_opts].join(
|
41
|
-
%
|
38
|
+
test_files = FileList[*options[:test_files]].join(" ")
|
39
|
+
rcov_opts = options[:rcov_opts].join(" ")
|
40
|
+
%(RAILS_ENV=#{options[:environment]} rcov #{test_files} #{rcov_opts} >> #{default_output_file})
|
42
41
|
end
|
43
42
|
|
44
43
|
def analyze
|
@@ -49,7 +48,7 @@ module MetricFu
|
|
49
48
|
|
50
49
|
def to_h
|
51
50
|
{
|
52
|
-
:
|
51
|
+
rcov: @rcov
|
53
52
|
}
|
54
53
|
end
|
55
54
|
|
@@ -70,8 +69,7 @@ module MetricFu
|
|
70
69
|
|
71
70
|
# Only used if run_rcov? is true
|
72
71
|
def default_output_file
|
73
|
-
output_file || File.join(metric_directory,
|
72
|
+
output_file || File.join(metric_directory, "rcov.txt")
|
74
73
|
end
|
75
|
-
|
76
74
|
end
|
77
75
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
MetricFu.reporting_require {
|
1
|
+
MetricFu.reporting_require { "graphs/grapher" }
|
2
2
|
module MetricFu
|
3
3
|
class RcovGrapher < Grapher
|
4
4
|
attr_accessor :rcov_percent, :labels
|
@@ -15,24 +15,23 @@ module MetricFu
|
|
15
15
|
|
16
16
|
def get_metrics(metrics, date)
|
17
17
|
if metrics && metrics[:rcov]
|
18
|
-
|
19
|
-
|
18
|
+
rcov_percent.push(metrics[:rcov][:global_percent_run])
|
19
|
+
labels.update(labels.size => date)
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
23
23
|
def title
|
24
|
-
|
24
|
+
"Rcov: code coverage"
|
25
25
|
end
|
26
26
|
|
27
27
|
def data
|
28
28
|
[
|
29
|
-
[
|
29
|
+
["rcov", @rcov_percent.join(",")]
|
30
30
|
]
|
31
31
|
end
|
32
32
|
|
33
33
|
def output_filename
|
34
|
-
|
34
|
+
"rcov.js"
|
35
35
|
end
|
36
|
-
|
37
36
|
end
|
38
37
|
end
|
@@ -1,5 +1,4 @@
|
|
1
1
|
class MetricFu::RcovHotspot < MetricFu::Hotspot
|
2
|
-
|
3
2
|
COLUMNS = %w{percentage_uncovered}
|
4
3
|
|
5
4
|
def columns
|
@@ -23,18 +22,18 @@ class MetricFu::RcovHotspot < 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
|
data.each do |file_name, info|
|
28
27
|
next if (file_name == :global_percent_run) || (info[:methods].nil?)
|
29
28
|
info[:methods].each do |method_name, percentage_uncovered|
|
30
29
|
location = MetricFu::Location.for(method_name)
|
31
30
|
table << {
|
32
31
|
"metric" => :rcov,
|
33
|
-
|
34
|
-
|
32
|
+
"file_path" => file_name,
|
33
|
+
"class_name" => location.class_name,
|
35
34
|
"method_name" => location.method_name,
|
36
35
|
"percentage_uncovered" => percentage_uncovered
|
37
|
-
|
36
|
+
}
|
38
37
|
end
|
39
38
|
end
|
40
39
|
end
|
@@ -42,7 +41,6 @@ class MetricFu::RcovHotspot < MetricFu::Hotspot
|
|
42
41
|
def present_group(group)
|
43
42
|
occurences = group.size
|
44
43
|
average_code_uncoverage = get_mean(group.column("percentage_uncovered"))
|
45
|
-
"#{
|
44
|
+
"#{'average ' if occurences > 1}uncovered code is %.1f%" % average_code_uncoverage
|
46
45
|
end
|
47
|
-
|
48
46
|
end
|
@@ -1,21 +1,20 @@
|
|
1
1
|
module MetricFu
|
2
2
|
class MetricRcov < Metric
|
3
|
-
|
4
3
|
def name
|
5
4
|
:rcov
|
6
5
|
end
|
7
6
|
|
8
7
|
def default_run_options
|
9
8
|
{
|
10
|
-
:
|
11
|
-
:
|
12
|
-
:
|
13
|
-
:
|
9
|
+
environment: "test",
|
10
|
+
test_files: Dir["{spec,test}/**/*_{spec,test}.rb"],
|
11
|
+
rcov_opts: rcov_opts,
|
12
|
+
external: nil,
|
14
13
|
}
|
15
14
|
end
|
16
15
|
|
17
16
|
def coverage_file=(coverage_file)
|
18
|
-
configured_run_options.update(:
|
17
|
+
configured_run_options.update(external: coverage_file)
|
19
18
|
end
|
20
19
|
|
21
20
|
def has_graph?
|
@@ -58,6 +57,5 @@ module MetricFu
|
|
58
57
|
rcov_opts << "-Ispec" if File.exist?("spec")
|
59
58
|
rcov_opts
|
60
59
|
end
|
61
|
-
|
62
60
|
end
|
63
61
|
end
|