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,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require "ruby_parser"
|
2
2
|
module MetricFu
|
3
3
|
SexpNode = Struct.new(:sexp) do
|
4
4
|
# @return file_sexp
|
@@ -9,66 +9,83 @@ module MetricFu
|
|
9
9
|
def nil?
|
10
10
|
sexp.nil?
|
11
11
|
end
|
12
|
+
|
12
13
|
def node_type
|
13
14
|
sexp[0]
|
14
15
|
end
|
16
|
+
|
15
17
|
def name
|
16
18
|
sexp[1]
|
17
19
|
end
|
18
|
-
|
20
|
+
|
21
|
+
def each_of_type(type, node_class = SexpNode)
|
19
22
|
sexp.each_of_type(type) do |child_sexp|
|
20
23
|
yield node_class.new(child_sexp)
|
21
24
|
end
|
22
25
|
end
|
26
|
+
|
23
27
|
def each_module(&block)
|
24
|
-
each_of_type(:module
|
28
|
+
each_of_type(:module, &block)
|
25
29
|
end
|
30
|
+
|
26
31
|
def each_class(&block)
|
27
|
-
each_of_type(:class
|
32
|
+
each_of_type(:class, &block)
|
28
33
|
end
|
34
|
+
|
29
35
|
def each_singleton_class(&block)
|
30
|
-
each_of_type(:sclass,SingletonMethodNode
|
36
|
+
each_of_type(:sclass, SingletonMethodNode, &block)
|
31
37
|
end
|
38
|
+
|
32
39
|
def each_instance_method(&block)
|
33
|
-
each_of_type(:defn,InstanceMethodNode
|
40
|
+
each_of_type(:defn, InstanceMethodNode, &block)
|
34
41
|
end
|
42
|
+
|
35
43
|
def each_class_method(&block)
|
36
|
-
each_of_type(:defs,ClassMethodNode
|
44
|
+
each_of_type(:defs, ClassMethodNode, &block)
|
37
45
|
end
|
46
|
+
|
38
47
|
def first_line
|
39
48
|
sexp.line
|
40
49
|
end
|
50
|
+
|
41
51
|
def last_line
|
42
52
|
sexp.last.line
|
43
53
|
end
|
54
|
+
|
44
55
|
def line_range
|
45
56
|
(first_line..last_line)
|
46
57
|
end
|
58
|
+
|
47
59
|
def hide_methods_from_next_round
|
48
60
|
sexp.find_and_replace_all(:defn, :ignore_me)
|
49
61
|
sexp.find_and_replace_all(:defs, :ignore_me)
|
50
62
|
end
|
51
|
-
|
63
|
+
|
64
|
+
def full_method_name(method_separator, class_name, module_name = nil)
|
52
65
|
[module_namespace(module_name), class_name, method_separator, name].join
|
53
66
|
end
|
54
|
-
|
67
|
+
|
68
|
+
def module_namespace(module_name = nil)
|
55
69
|
if module_name.nil?
|
56
70
|
nil
|
57
71
|
else
|
58
|
-
[module_name,class_method_separator].join
|
72
|
+
[module_name, class_method_separator].join
|
59
73
|
end
|
60
74
|
end
|
75
|
+
|
61
76
|
def instance_method_separator
|
62
|
-
|
77
|
+
"#"
|
63
78
|
end
|
79
|
+
|
64
80
|
def class_method_separator
|
65
|
-
|
81
|
+
"::"
|
66
82
|
end
|
67
83
|
end
|
68
84
|
class ClassMethodNode < SexpNode
|
69
85
|
def name
|
70
86
|
sexp[2]
|
71
87
|
end
|
88
|
+
|
72
89
|
def full_name(module_name, class_name)
|
73
90
|
full_method_name(class_method_separator, class_name, module_name)
|
74
91
|
end
|
@@ -82,8 +99,9 @@ module MetricFu
|
|
82
99
|
def full_name(class_name)
|
83
100
|
full_method_name(class_method_separator, class_name)
|
84
101
|
end
|
102
|
+
|
85
103
|
def each_singleton_method(&block)
|
86
|
-
each_of_type(:defn,SingletonMethodNode
|
104
|
+
each_of_type(:defn, SingletonMethodNode, &block)
|
87
105
|
end
|
88
106
|
end
|
89
107
|
end
|
@@ -1,9 +1,8 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
MetricFu.lib_require {
|
1
|
+
require "redcard"
|
2
|
+
require "rbconfig"
|
3
|
+
MetricFu.lib_require { "logger" }
|
4
4
|
module MetricFu
|
5
5
|
module Environment
|
6
|
-
|
7
6
|
# TODO: Set log_level here, instead
|
8
7
|
def verbose
|
9
8
|
MetricFu.logger.debug_on
|
@@ -28,7 +27,7 @@ module MetricFu
|
|
28
27
|
end
|
29
28
|
|
30
29
|
def is_cruise_control_rb?
|
31
|
-
!!ENV[
|
30
|
+
!!ENV["CC_BUILD_ARTIFACTS"]
|
32
31
|
end
|
33
32
|
|
34
33
|
def jruby?
|
@@ -48,11 +47,11 @@ module MetricFu
|
|
48
47
|
end
|
49
48
|
|
50
49
|
def ruby18?
|
51
|
-
@ruby18 ||= mri? && !!RedCard.check(
|
50
|
+
@ruby18 ||= mri? && !!RedCard.check("1.8"..."1.9")
|
52
51
|
end
|
53
52
|
|
54
53
|
def ruby192?
|
55
|
-
@ruby192 ||= mri? && ruby_version ==
|
54
|
+
@ruby192 ||= mri? && ruby_version == "1.9.2"
|
56
55
|
end
|
57
56
|
|
58
57
|
def rubinius?
|
@@ -61,7 +60,7 @@ module MetricFu
|
|
61
60
|
|
62
61
|
def supports_ripper?
|
63
62
|
@supports_ripper ||= begin
|
64
|
-
require
|
63
|
+
require "ripper"
|
65
64
|
true
|
66
65
|
rescue LoadError
|
67
66
|
false
|
@@ -69,7 +68,7 @@ module MetricFu
|
|
69
68
|
end
|
70
69
|
|
71
70
|
def platform #:nodoc:
|
72
|
-
|
71
|
+
RUBY_PLATFORM
|
73
72
|
end
|
74
73
|
|
75
74
|
def version
|
@@ -78,12 +77,12 @@ module MetricFu
|
|
78
77
|
|
79
78
|
def environment_details
|
80
79
|
@environment_details ||= {
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
80
|
+
"VERBOSE" => $VERBOSE.inspect,
|
81
|
+
"External Encoding" => Encoding.default_external.to_s,
|
82
|
+
"Internal Encoding" => Encoding.default_internal.to_s,
|
83
|
+
"Host Architecture" => RbConfig::CONFIG["build"],
|
84
|
+
"Ruby Prefix" => RbConfig::CONFIG["prefix"],
|
85
|
+
"Ruby Options" => ENV.keys.grep(/RUBYOPT/).map { |key| "#{key}=#{ENV[key]}" }.join(", "),
|
87
86
|
}
|
88
87
|
end
|
89
88
|
|
@@ -92,40 +91,39 @@ module MetricFu
|
|
92
91
|
# $LOAD_PATH
|
93
92
|
def ruby_details
|
94
93
|
@ruby_details ||= {
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
94
|
+
"Engine" => ruby_flavor,
|
95
|
+
"Version" => ruby_version,
|
96
|
+
"Patchlevel" => (defined?(RUBY_PATCHLEVEL) && RUBY_PATCHLEVEL),
|
97
|
+
"Ripper Support" => supports_ripper?,
|
98
|
+
"Rubygems Version" => Gem::VERSION,
|
99
|
+
"Long Description" => (defined?(RUBY_DESCRIPTION) ? RUBY_DESCRIPTION : platform),
|
101
100
|
}
|
102
101
|
end
|
103
102
|
|
104
103
|
def library_details
|
105
104
|
@library_details ||= {
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
105
|
+
"Version" => version,
|
106
|
+
"Verbose Mode" => verbose,
|
107
|
+
"Enabled Metrics" => MetricFu::Metric.enabled_metrics.map(&:name),
|
108
|
+
"Dependencies" => MetricFu::GemVersion.dependencies_summary,
|
110
109
|
}
|
111
110
|
end
|
112
111
|
|
113
112
|
def debug_info
|
114
113
|
@debug_info ||= {
|
115
|
-
|
116
|
-
|
117
|
-
|
114
|
+
"Ruby" => ruby_details,
|
115
|
+
"Environment" => environment_details,
|
116
|
+
"MetricFu" => library_details,
|
118
117
|
}
|
119
118
|
end
|
120
119
|
|
121
120
|
def osx?
|
122
|
-
@osx ||= platform.include?(
|
121
|
+
@osx ||= platform.include?("darwin")
|
123
122
|
end
|
124
123
|
|
125
124
|
def ruby_strangely_makes_accessors_private?
|
126
|
-
|
125
|
+
@private_accessors ||= ruby192? || jruby?
|
127
126
|
end
|
128
127
|
module_function :ruby_strangely_makes_accessors_private?
|
129
|
-
|
130
128
|
end
|
131
129
|
end
|
data/lib/metric_fu/formatter.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
|
-
require
|
1
|
+
require "metric_fu/constantize"
|
2
2
|
module MetricFu
|
3
3
|
module Formatter
|
4
4
|
BUILTIN_FORMATS = {
|
5
|
-
|
6
|
-
|
5
|
+
"html" => ["MetricFu::Formatter::HTML", "Generates a templated HTML report using the configured template class and graph engine."],
|
6
|
+
"yaml" => ["MetricFu::Formatter::YAML", "Generates the raw output as yaml"]
|
7
7
|
}
|
8
8
|
DEFAULT = [[:html]]
|
9
9
|
|
@@ -17,11 +17,10 @@ module MetricFu
|
|
17
17
|
constantize(format.to_s)
|
18
18
|
end
|
19
19
|
end
|
20
|
-
|
21
20
|
end
|
22
21
|
|
23
22
|
module Templates
|
24
|
-
MetricFu.lib_require {
|
23
|
+
MetricFu.lib_require { "templates/metrics_template" }
|
25
24
|
|
26
25
|
module_function
|
27
26
|
|
@@ -36,7 +35,6 @@ module MetricFu
|
|
36
35
|
def templates_configuration
|
37
36
|
@templates_configuration ||= MetricFu::Templates::Configuration.new
|
38
37
|
end
|
39
|
-
|
40
38
|
end
|
41
39
|
end
|
42
40
|
end
|
@@ -1,12 +1,12 @@
|
|
1
|
-
require
|
2
|
-
MetricFu.formatter_require {
|
3
|
-
MetricFu.reporting_require {
|
1
|
+
require "launchy"
|
2
|
+
MetricFu.formatter_require { "yaml" }
|
3
|
+
MetricFu.reporting_require { "graphs/graph" }
|
4
4
|
module MetricFu
|
5
5
|
module Formatter
|
6
6
|
class HTML
|
7
7
|
include MetricFu::Io
|
8
8
|
|
9
|
-
def initialize(opts={})
|
9
|
+
def initialize(opts = {})
|
10
10
|
@options = opts
|
11
11
|
end
|
12
12
|
|
@@ -27,20 +27,20 @@ module MetricFu
|
|
27
27
|
end
|
28
28
|
|
29
29
|
def write_template(output, file)
|
30
|
-
write_output(output, "#{
|
30
|
+
write_output(output, "#{output_directory}/#{file}")
|
31
31
|
end
|
32
32
|
|
33
33
|
def display_results
|
34
34
|
if self.open_in_browser?
|
35
|
-
mf_debug "** OPENING IN BROWSER FROM #{
|
36
|
-
|
35
|
+
mf_debug "** OPENING IN BROWSER FROM #{output_directory}"
|
36
|
+
show_in_browser(output_directory)
|
37
37
|
end
|
38
38
|
end
|
39
39
|
|
40
40
|
protected
|
41
41
|
|
42
42
|
def output_directory
|
43
|
-
@output ||= dir_for(@options[:output]) || MetricFu.run_path.join(MetricFu::Io::FileSystem.directory(
|
43
|
+
@output ||= dir_for(@options[:output]) || MetricFu.run_path.join(MetricFu::Io::FileSystem.directory("output_directory"))
|
44
44
|
end
|
45
45
|
|
46
46
|
# Instantiates a new template class based on the configuration set
|
@@ -49,8 +49,8 @@ module MetricFu
|
|
49
49
|
# assigns the result_hash to the result_hash in the template, and
|
50
50
|
# tells the template to to write itself out.
|
51
51
|
def save_templatized_result
|
52
|
-
@template = MetricFu::Formatter::Templates.option(
|
53
|
-
@template.output_directory =
|
52
|
+
@template = MetricFu::Formatter::Templates.option("template_class").new
|
53
|
+
@template.output_directory = output_directory
|
54
54
|
@template.result = MetricFu.result.result_hash
|
55
55
|
@template.per_file_data = MetricFu.result.per_file_data
|
56
56
|
@template.formatter = self
|
@@ -64,7 +64,7 @@ module MetricFu
|
|
64
64
|
mf_debug "** Graphing #{graphed_metric} with #{MetricFu.configuration.graph_engine}"
|
65
65
|
# TODO: This should probably be defined on configuration
|
66
66
|
# rather than the module. See MetricFu::Graph
|
67
|
-
MetricFu.graph.add(graphed_metric, MetricFu.configuration.graph_engine,
|
67
|
+
MetricFu.graph.add(graphed_metric, MetricFu.configuration.graph_engine, output_directory)
|
68
68
|
}
|
69
69
|
mf_debug "** GENERATING GRAPH"
|
70
70
|
MetricFu.graph.generate
|
@@ -78,7 +78,7 @@ module MetricFu
|
|
78
78
|
# @return Boolean
|
79
79
|
# Should we open in the browser or not?
|
80
80
|
def open_in_browser?
|
81
|
-
!
|
81
|
+
!MetricFu.configuration.is_cruise_control_rb?
|
82
82
|
end
|
83
83
|
|
84
84
|
# Shows 'index.html' from the passed directory in the browser
|
@@ -88,7 +88,7 @@ module MetricFu
|
|
88
88
|
# The directory path where the 'index.html' we want to open is
|
89
89
|
# stored
|
90
90
|
def show_in_browser(dir)
|
91
|
-
uri = URI.join(URI.escape("file://#{dir}/"),
|
91
|
+
uri = URI.join(URI.escape("file://#{dir}/"), "index.html")
|
92
92
|
Launchy.open(uri) if open_in_browser?
|
93
93
|
end
|
94
94
|
end
|
@@ -1,5 +1,5 @@
|
|
1
|
-
require
|
2
|
-
MetricFu.lib_require {
|
1
|
+
require "coderay"
|
2
|
+
MetricFu.lib_require { "utility" }
|
3
3
|
# CodeRay options
|
4
4
|
# used to analyze source code, because object Tokens is a list of tokens with specified types.
|
5
5
|
# :tab_width – tabulation width in spaces. Default: 8
|
@@ -15,10 +15,9 @@ MetricFu.lib_require { 'utility' }
|
|
15
15
|
module MetricFu
|
16
16
|
module Formatter
|
17
17
|
class Syntax
|
18
|
-
|
19
18
|
def initialize
|
20
|
-
@options = { :
|
21
|
-
@line_number_options = {:
|
19
|
+
@options = { css: :class, style: :alpha }
|
20
|
+
@line_number_options = { line_numbers: :inline, line_number_start: 0 }
|
22
21
|
end
|
23
22
|
|
24
23
|
def highlight(ruby_text, line_number)
|
@@ -29,7 +28,7 @@ module MetricFu
|
|
29
28
|
def highlight_options(line_number)
|
30
29
|
line_number = line_number.to_i
|
31
30
|
if line_number > 0
|
32
|
-
@options.merge(@line_number_options.merge(:
|
31
|
+
@options.merge(@line_number_options.merge(line_number_start: line_number))
|
33
32
|
else
|
34
33
|
@options
|
35
34
|
end
|
@@ -41,7 +40,6 @@ module MetricFu
|
|
41
40
|
ascii_text = MetricFu::Utility.clean_ascii_text(ruby_text)
|
42
41
|
tokens = CodeRay.scan(ascii_text, :ruby)
|
43
42
|
end
|
44
|
-
|
45
43
|
end
|
46
44
|
end
|
47
45
|
end
|
data/lib/metric_fu/gem_run.rb
CHANGED
@@ -1,20 +1,19 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
-
require
|
3
|
-
require
|
4
|
-
require
|
5
|
-
MetricFu.lib_require {
|
6
|
-
MetricFu.lib_require {
|
2
|
+
require "open3"
|
3
|
+
require "shellwords"
|
4
|
+
require "metric_fu"
|
5
|
+
MetricFu.lib_require { "logger" }
|
6
|
+
MetricFu.lib_require { "gem_version" }
|
7
7
|
module MetricFu
|
8
8
|
class GemRun
|
9
|
-
|
10
9
|
attr_reader :output, :gem_name, :library_name, :version, :arguments
|
11
|
-
def initialize(arguments={})
|
10
|
+
def initialize(arguments = {})
|
12
11
|
@gem_name = arguments.fetch(:gem_name)
|
13
12
|
@library_name = arguments.fetch(:metric_name)
|
14
13
|
@version = arguments.fetch(:version) { MetricFu::GemVersion.for(library_name) }
|
15
14
|
args = arguments.fetch(:args)
|
16
15
|
@arguments = args.respond_to?(:scan) ? Shellwords.shellwords(args) : args
|
17
|
-
@output =
|
16
|
+
@output = ""
|
18
17
|
@errors = []
|
19
18
|
end
|
20
19
|
|
@@ -28,10 +27,10 @@ module MetricFu
|
|
28
27
|
|
29
28
|
def execute
|
30
29
|
mf_debug "Running #{summary}"
|
31
|
-
captured_output =
|
32
|
-
captured_errors =
|
33
|
-
thread =
|
34
|
-
Open3.popen3("#{library_name}", *arguments) do |
|
30
|
+
captured_output = ""
|
31
|
+
captured_errors = ""
|
32
|
+
thread = ""
|
33
|
+
Open3.popen3("#{library_name}", *arguments) do |_stdin, stdout, stderr, wait_thr|
|
35
34
|
captured_output << stdout.read.chomp
|
36
35
|
captured_errors << stderr.read.chomp
|
37
36
|
thread = wait_thr
|
@@ -52,8 +51,8 @@ module MetricFu
|
|
52
51
|
def handle_system_exit(system_exit)
|
53
52
|
status = system_exit.success? ? "SUCCESS" : "FAILURE"
|
54
53
|
message = "#{status} with code #{system_exit.status}: " <<
|
55
|
-
|
56
|
-
if status ==
|
54
|
+
"#{system_exit.message}: #{system_exit.backtrace.inspect}"
|
55
|
+
if status == "SUCCESS"
|
57
56
|
mf_debug message
|
58
57
|
else
|
59
58
|
@errors << message
|
@@ -67,6 +66,5 @@ module MetricFu
|
|
67
66
|
STDERR.puts "\t" << error
|
68
67
|
end
|
69
68
|
end
|
70
|
-
|
71
69
|
end
|
72
70
|
end
|