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.lib_require {
|
2
|
-
MetricFu.lib_require {
|
3
|
-
|
1
|
+
MetricFu.lib_require { "formatter/syntax" }
|
2
|
+
MetricFu.lib_require { "templates/template" }
|
4
3
|
|
5
4
|
# Creates an HTML document for a given analyzed file,
|
6
5
|
# with scored metrics annotating the relevant line.
|
7
6
|
module MetricFu
|
8
7
|
module Templates
|
9
8
|
class Report < MetricFu::Template
|
10
|
-
|
11
9
|
# @param file [String] the analyzed file to annotate
|
12
10
|
# @param lines [Hash] of line number [String] keyed to an list [[Array] of metrics for that line. Each metric in the list is a hash containing the keys :type => metric_name, :descrption => metric_score
|
13
11
|
# @example file and lines
|
@@ -16,11 +14,11 @@ module MetricFu
|
|
16
14
|
def initialize(file, lines)
|
17
15
|
@file = file
|
18
16
|
@lines = lines
|
19
|
-
@data = File.open(file,
|
17
|
+
@data = File.open(file, "rb") { |f| f.readlines }
|
20
18
|
end
|
21
19
|
|
22
20
|
def render
|
23
|
-
erbify(
|
21
|
+
erbify("report")
|
24
22
|
end
|
25
23
|
|
26
24
|
def convert_ruby_to_html(ruby_text, line_number)
|
@@ -28,7 +26,7 @@ module MetricFu
|
|
28
26
|
end
|
29
27
|
|
30
28
|
def line_for_display(line, line_number)
|
31
|
-
if MetricFu::Formatter::Templates.option(
|
29
|
+
if MetricFu::Formatter::Templates.option("syntax_highlighting")
|
32
30
|
line_for_display = convert_ruby_to_html(line, line_number)
|
33
31
|
else
|
34
32
|
"<a name='n#{line_number}' href='n#{line_number}'>#{line_number}</a>#{line}"
|
@@ -38,7 +36,6 @@ module MetricFu
|
|
38
36
|
def template_directory
|
39
37
|
File.dirname(__FILE__)
|
40
38
|
end
|
41
|
-
|
42
39
|
end
|
43
40
|
end
|
44
41
|
end
|
@@ -1,11 +1,10 @@
|
|
1
|
-
require
|
1
|
+
require "erb"
|
2
2
|
module MetricFu
|
3
|
-
|
4
3
|
class Template
|
5
4
|
attr_accessor :output_directory
|
6
5
|
|
7
6
|
def output_directory
|
8
|
-
@output_directory || MetricFu::Io::FileSystem.directory(
|
7
|
+
@output_directory || MetricFu::Io::FileSystem.directory("output_directory")
|
9
8
|
end
|
10
9
|
|
11
10
|
# Renders a partial and add optional instance variables to the template
|
@@ -18,6 +17,7 @@ module MetricFu
|
|
18
17
|
end
|
19
18
|
|
20
19
|
private
|
20
|
+
|
21
21
|
# Creates a new erb evaluated result from the passed in section.
|
22
22
|
#
|
23
23
|
# @param section String
|
@@ -82,7 +82,7 @@ module MetricFu
|
|
82
82
|
end
|
83
83
|
|
84
84
|
def metric_template_path(metric)
|
85
|
-
File.join(MetricFu.metrics_dir, metric,
|
85
|
+
File.join(MetricFu.metrics_dir, metric, "report.html.erb")
|
86
86
|
end
|
87
87
|
|
88
88
|
# Determines whether a template file exists for a given section
|
@@ -118,7 +118,7 @@ module MetricFu
|
|
118
118
|
# @return String
|
119
119
|
# The contents of the css file
|
120
120
|
def inline_css(css)
|
121
|
-
css_file = File.join(MetricFu.lib_dir,
|
121
|
+
css_file = File.join(MetricFu.lib_dir, "templates", css)
|
122
122
|
MetricFu::Utility.binread(css_file)
|
123
123
|
end
|
124
124
|
|
@@ -140,11 +140,11 @@ module MetricFu
|
|
140
140
|
end
|
141
141
|
|
142
142
|
def round_to_tenths(decimal)
|
143
|
-
decimal = 0.0 if decimal.to_s.eql?(
|
143
|
+
decimal = 0.0 if decimal.to_s.eql?("NaN")
|
144
144
|
(decimal * 10).round / 10.0
|
145
145
|
end
|
146
146
|
|
147
|
-
def link_content(name, line=nil, link_content=nil) # :nodoc:
|
147
|
+
def link_content(name, line = nil, link_content = nil) # :nodoc:
|
148
148
|
if link_content
|
149
149
|
link_content
|
150
150
|
elsif line
|
@@ -155,49 +155,45 @@ module MetricFu
|
|
155
155
|
end
|
156
156
|
|
157
157
|
def display_location(location)
|
158
|
-
class_name, method_name = location.fetch(
|
158
|
+
class_name, method_name = location.fetch("class_name"), location.fetch("method_name")
|
159
159
|
str = ""
|
160
|
-
str += link_to_filename(location.fetch(
|
160
|
+
str += link_to_filename(location.fetch("file_name"), location.fetch("line_number"))
|
161
161
|
str += " : " if method_name || class_name
|
162
|
-
if
|
162
|
+
if method_name
|
163
163
|
str += "#{method_name}"
|
164
164
|
else
|
165
|
-
#TODO HOTSPOTS BUG ONLY exists on move over to metric_fu
|
165
|
+
# TODO HOTSPOTS BUG ONLY exists on move over to metric_fu
|
166
166
|
if class_name.is_a?(String)
|
167
|
-
str+= "#{class_name}"
|
167
|
+
str += "#{class_name}"
|
168
168
|
end
|
169
169
|
end
|
170
170
|
str
|
171
171
|
end
|
172
172
|
|
173
173
|
def file_url(name, line) # :nodoc:
|
174
|
-
return
|
174
|
+
return "" unless name
|
175
175
|
filename = complete_file_path(name)
|
176
176
|
|
177
177
|
if render_as_txmt_protocol?
|
178
178
|
"txmt://open/?url=file://#{filename}" << (line ? "&line=#{line}" : "")
|
179
179
|
else
|
180
|
-
link_prefix = MetricFu.configuration.templates_option(
|
180
|
+
link_prefix = MetricFu.configuration.templates_option("link_prefix")
|
181
181
|
if link_prefix == MetricFu::Templates::Configuration::FILE_PREFIX
|
182
182
|
path = filename
|
183
183
|
else
|
184
|
-
path = name.gsub(/:.*$/,
|
184
|
+
path = name.gsub(/:.*$/, "")
|
185
185
|
end
|
186
186
|
"#{link_prefix}/#{path}"
|
187
187
|
end
|
188
188
|
end
|
189
189
|
|
190
190
|
def complete_file_path(filename)
|
191
|
-
File.expand_path(
|
192
|
-
end
|
193
|
-
|
194
|
-
def remove_leading_slash(filename)
|
195
|
-
filename.gsub(/^\//, '')
|
191
|
+
File.expand_path(filename)
|
196
192
|
end
|
197
193
|
|
198
194
|
def render_as_txmt_protocol? # :nodoc:
|
199
195
|
if MetricFu.configuration.osx?
|
200
|
-
!MetricFu.configuration.templates_option(
|
196
|
+
!MetricFu.configuration.templates_option("darwin_txmt_protocol_no_thanks")
|
201
197
|
else
|
202
198
|
false
|
203
199
|
end
|
@@ -219,14 +215,14 @@ module MetricFu
|
|
219
215
|
# iteration is odd.
|
220
216
|
def cycle(first_value, second_value, iteration)
|
221
217
|
return first_value if iteration % 2 == 0
|
222
|
-
|
218
|
+
second_value
|
223
219
|
end
|
224
220
|
|
225
221
|
# available in the erb template
|
226
222
|
# as it's processed in the context of
|
227
223
|
# the binding of this class
|
228
224
|
def metric_links
|
229
|
-
@metrics.keys.map {|metric| metric_link(metric.to_s) }
|
225
|
+
@metrics.keys.map { |metric| metric_link(metric.to_s) }
|
230
226
|
end
|
231
227
|
|
232
228
|
def metric_link(metric)
|
@@ -238,7 +234,7 @@ module MetricFu
|
|
238
234
|
end
|
239
235
|
|
240
236
|
def snake_case_to_title_case(string)
|
241
|
-
string.split(
|
237
|
+
string.split("_").collect { |word| word[0] = word[0..0].upcase; word }.join(" ")
|
242
238
|
end
|
243
239
|
|
244
240
|
def template_directory
|
data/lib/metric_fu/utility.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require "yaml"
|
2
|
+
require "fileutils"
|
3
3
|
module MetricFu
|
4
4
|
module Utility
|
5
5
|
module_function
|
@@ -10,17 +10,17 @@ module MetricFu
|
|
10
10
|
def clean_ascii_text(text)
|
11
11
|
if text.respond_to?(:encode)
|
12
12
|
# avoids invalid multi-byte escape error
|
13
|
-
ascii_text = text.encode(
|
13
|
+
ascii_text = text.encode("ASCII", invalid: :replace, undef: :replace, replace: "")
|
14
14
|
# see http://www.ruby-forum.com/topic/183413
|
15
|
-
pattern = Regexp.new('[\x80-\xff]', nil,
|
16
|
-
ascii_text.gsub(pattern,
|
15
|
+
pattern = Regexp.new('[\x80-\xff]', nil, "n")
|
16
|
+
ascii_text.gsub(pattern, "")
|
17
17
|
else
|
18
18
|
text
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
22
22
|
def strip_escape_codes(text)
|
23
|
-
text.gsub(ESCAPE_CODES_PATTERN,
|
23
|
+
text.gsub(ESCAPE_CODES_PATTERN, "")
|
24
24
|
end
|
25
25
|
|
26
26
|
def rm_rf(*args)
|
@@ -45,7 +45,7 @@ module MetricFu
|
|
45
45
|
|
46
46
|
# From episode 029 of Ruby Tapas by Avdi
|
47
47
|
# https://rubytapas.dpdcart.com/subscriber/post?id=88
|
48
|
-
def capture_output(stream=STDOUT, &
|
48
|
+
def capture_output(stream = STDOUT, &_block)
|
49
49
|
old_stdout = stream.clone
|
50
50
|
pipe_r, pipe_w = IO.pipe
|
51
51
|
pipe_r.sync = true
|
@@ -67,6 +67,5 @@ module MetricFu
|
|
67
67
|
pipe_r.close
|
68
68
|
return output
|
69
69
|
end
|
70
|
-
|
71
70
|
end
|
72
71
|
end
|
data/lib/metric_fu/version.rb
CHANGED
data/metric_fu.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
$:.push File.expand_path("../lib", __FILE__)
|
3
|
-
require
|
3
|
+
require "metric_fu/version"
|
4
4
|
|
5
5
|
Gem::Specification.new do |s|
|
6
6
|
s.name = "metric_fu"
|
@@ -8,33 +8,33 @@ Gem::Specification.new do |s|
|
|
8
8
|
s.summary = "A fistful of code metrics, with awesome templates and graphs"
|
9
9
|
s.description = "Code metrics from Flog, Flay, Saikuro, Churn, Reek, Roodi, Code Statistics, and Rails Best Practices. (and optionally RCov)"
|
10
10
|
s.email = "github@benjaminfleischer.com"
|
11
|
-
author_file = File.expand_path(
|
12
|
-
s.authors = File.readlines(author_file, :
|
11
|
+
author_file = File.expand_path("AUTHORS", File.dirname(__FILE__))
|
12
|
+
s.authors = File.readlines(author_file, encoding: Encoding::UTF_8).map(&:strip)
|
13
13
|
|
14
14
|
# used with gem i metric_fu -P HighSecurity
|
15
|
-
s.cert_chain = [
|
15
|
+
s.cert_chain = ["certs/bf4.pem"]
|
16
16
|
# Sign gem when evaluating spec with `gem` command
|
17
17
|
# unless ENV has set a SKIP_GEM_SIGNING
|
18
|
-
if ($0 =~ /gem\z/) and not ENV.include?(
|
19
|
-
s.signing_key = File.join(Gem.user_home,
|
18
|
+
if ($0 =~ /gem\z/) and not ENV.include?("SKIP_GEM_SIGNING")
|
19
|
+
s.signing_key = File.join(Gem.user_home, ".ssh", "gem-private_key.pem")
|
20
20
|
end
|
21
21
|
|
22
|
-
s.rubyforge_project =
|
23
|
-
s.license =
|
22
|
+
s.rubyforge_project = "metric_fu"
|
23
|
+
s.license = "MIT"
|
24
24
|
s.platform = Gem::Platform::RUBY
|
25
25
|
s.version = MetricFu::VERSION
|
26
26
|
s.required_ruby_version = ">= 1.9.0"
|
27
27
|
s.required_rubygems_version = ">= 1.3.6"
|
28
28
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
29
|
+
tracked_files = `git ls-files`.split($\)
|
30
|
+
excluded_dirs = %r{\Aetc}
|
31
|
+
files = tracked_files.reject { |file| file[excluded_dirs] }
|
32
|
+
test_files = files.grep(%r{^(test|spec|features)/})
|
33
|
+
executables = files.grep(%r{^bin/}).map { |f| File.basename(f) }
|
34
34
|
s.files = files
|
35
35
|
s.test_files = test_files
|
36
36
|
s.executables = executables
|
37
|
-
s.default_executable =
|
37
|
+
s.default_executable = "metric_fu"
|
38
38
|
s.require_paths = ["lib"]
|
39
39
|
|
40
40
|
s.has_rdoc = true
|
@@ -42,31 +42,30 @@ Gem::Specification.new do |s|
|
|
42
42
|
s.rdoc_options = ["--main", "README.md"]
|
43
43
|
|
44
44
|
# metric dependencies
|
45
|
-
s.add_runtime_dependency
|
46
|
-
s.add_runtime_dependency
|
47
|
-
s.add_runtime_dependency
|
48
|
-
s.add_runtime_dependency
|
49
|
-
s.add_runtime_dependency
|
50
|
-
s.add_runtime_dependency
|
51
|
-
s.add_runtime_dependency
|
52
|
-
s.add_runtime_dependency
|
53
|
-
s.add_runtime_dependency
|
45
|
+
s.add_runtime_dependency "flay", [">= 2.0.1", "~> 2.1"]
|
46
|
+
s.add_runtime_dependency "churn", ["~> 0.0.35"]
|
47
|
+
s.add_runtime_dependency "flog", [">= 4.1.1", "~> 4.1"]
|
48
|
+
s.add_runtime_dependency "reek", [">= 1.3.4", "~> 1.3"]
|
49
|
+
s.add_runtime_dependency "cane", [">= 2.5.2", "~> 2.5"]
|
50
|
+
s.add_runtime_dependency "rails_best_practices", [">= 1.14.3", "~> 1.14"]
|
51
|
+
s.add_runtime_dependency "metric_fu-Saikuro", [">= 1.1.3", "~> 1.1"]
|
52
|
+
s.add_runtime_dependency "roodi", ["~> 3.1"]
|
53
|
+
s.add_runtime_dependency "code_metrics", ["~> 0.1"]
|
54
54
|
|
55
55
|
# other dependencies
|
56
56
|
# ruby version identification
|
57
|
-
s.add_runtime_dependency
|
57
|
+
s.add_runtime_dependency "redcard"
|
58
58
|
# syntax highlighting
|
59
|
-
s.add_runtime_dependency
|
59
|
+
s.add_runtime_dependency "coderay"
|
60
60
|
# to_json support
|
61
|
-
s.add_runtime_dependency
|
61
|
+
s.add_runtime_dependency "multi_json"
|
62
62
|
# open browser support
|
63
|
-
s.add_runtime_dependency
|
63
|
+
s.add_runtime_dependency "launchy", "~> 2.0"
|
64
64
|
|
65
|
-
s.add_development_dependency
|
65
|
+
s.add_development_dependency "rspec", "~> 3.1"
|
66
66
|
# temporary filesystem to act on
|
67
|
-
s.add_development_dependency
|
67
|
+
s.add_development_dependency "test_construct"
|
68
68
|
# ensure we have a JSON parser
|
69
|
-
s.add_development_dependency
|
70
|
-
s.add_development_dependency
|
71
|
-
|
69
|
+
s.add_development_dependency "json"
|
70
|
+
s.add_development_dependency "simplecov", "~> 0.9"
|
72
71
|
end
|
data/spec/cli/helper_spec.rb
CHANGED
@@ -1,19 +1,16 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require "spec_helper"
|
2
|
+
require "metric_fu/cli/helper"
|
3
3
|
MetricFu.configuration.configure_metric(:rcov) do |rcov|
|
4
4
|
rcov.enabled = true
|
5
5
|
end
|
6
6
|
MetricFu.configure
|
7
7
|
|
8
8
|
describe MetricFu::Cli::Helper do
|
9
|
-
|
10
9
|
describe "defaults" do
|
11
|
-
|
12
10
|
let(:helper) { MetricFu::Cli::Helper.new }
|
13
11
|
let(:defaults) { helper.process_options }
|
14
12
|
|
15
13
|
context "on every Ruby version" do
|
16
|
-
|
17
14
|
it "opens the report in a browser" do
|
18
15
|
expect(defaults[:open]).to be_truthy
|
19
16
|
end
|
@@ -59,12 +56,11 @@ describe MetricFu::Cli::Helper do
|
|
59
56
|
|
60
57
|
if MetricFu.configuration.mri?
|
61
58
|
|
62
|
-
|
63
|
-
|
64
|
-
|
59
|
+
it "enables Rails Best Practices" do
|
60
|
+
expect(defaults[:rails_best_practices]).to be_truthy
|
61
|
+
end
|
65
62
|
|
66
63
|
end
|
67
|
-
|
68
64
|
end
|
69
65
|
|
70
66
|
describe ".parse" do
|
@@ -122,7 +118,6 @@ describe MetricFu::Cli::Helper do
|
|
122
118
|
|
123
119
|
end
|
124
120
|
|
125
|
-
|
126
121
|
it "turns hotspots off" do
|
127
122
|
expect(helper.process_options(["--no-hotspots"])[:hotspots]).to be_falsey
|
128
123
|
end
|
@@ -157,16 +152,14 @@ describe MetricFu::Cli::Helper do
|
|
157
152
|
|
158
153
|
context "given a single format" do
|
159
154
|
it "sets the format" do
|
160
|
-
expect(helper.process_options(["--format", "json"])[:format]).to eq([[
|
155
|
+
expect(helper.process_options(["--format", "json"])[:format]).to eq([["json"]])
|
161
156
|
end
|
162
157
|
end
|
163
158
|
|
164
159
|
context "given multiple formats" do
|
165
160
|
it "sets multiple formats" do
|
166
|
-
expect(helper.process_options(["--format", "json", "--format", "yaml"])[:format]).to eq([[
|
161
|
+
expect(helper.process_options(["--format", "json", "--format", "yaml"])[:format]).to eq([["json"], ["yaml"]])
|
167
162
|
end
|
168
163
|
end
|
169
|
-
|
170
164
|
end
|
171
|
-
|
172
165
|
end
|
data/spec/fixtures/coverage.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
require
|
2
|
-
MetricFu.lib_require {
|
1
|
+
require "spec_helper"
|
2
|
+
MetricFu.lib_require { "calculate" }
|
3
3
|
|
4
4
|
describe MetricFu::Calculate do
|
5
5
|
describe "returns a percent rounded to the nearest integer" do
|
@@ -15,7 +15,7 @@ describe MetricFu::Calculate do
|
|
15
15
|
}.to raise_error(ArgumentError)
|
16
16
|
end
|
17
17
|
it "returns 0 when the denominator is 0" do
|
18
|
-
expect(MetricFu::Calculate.integer_percent(3,0)).to eq(0)
|
18
|
+
expect(MetricFu::Calculate.integer_percent(3, 0)).to eq(0)
|
19
19
|
end
|
20
20
|
end
|
21
21
|
end
|