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.
Files changed (188) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/.rubocop.yml +15 -0
  5. data/.rubocop_todo.yml +69 -0
  6. data/.travis.yml +0 -1
  7. data/CONTRIBUTORS +1 -1
  8. data/Gemfile +23 -20
  9. data/Guardfile +9 -9
  10. data/HISTORY.md +10 -1
  11. data/checksum/metric_fu-4.11.3.gem.sha512 +1 -0
  12. data/config/rubocop.yml +269 -0
  13. data/gem_tasks/rubocop.rake +10 -0
  14. data/lib/metric_fu.rb +11 -9
  15. data/lib/metric_fu/calculate.rb +0 -1
  16. data/lib/metric_fu/cli/client.rb +6 -6
  17. data/lib/metric_fu/cli/helper.rb +22 -13
  18. data/lib/metric_fu/cli/parser.rb +14 -18
  19. data/lib/metric_fu/configuration.rb +7 -11
  20. data/lib/metric_fu/constantize.rb +4 -4
  21. data/lib/metric_fu/data_structures/line_numbers.rb +10 -11
  22. data/lib/metric_fu/data_structures/location.rb +12 -14
  23. data/lib/metric_fu/data_structures/sexp_node.rb +31 -13
  24. data/lib/metric_fu/environment.rb +29 -31
  25. data/lib/metric_fu/formatter.rb +4 -6
  26. data/lib/metric_fu/formatter/html.rb +13 -13
  27. data/lib/metric_fu/formatter/syntax.rb +5 -7
  28. data/lib/metric_fu/formatter/yaml.rb +1 -1
  29. data/lib/metric_fu/gem_run.rb +13 -15
  30. data/lib/metric_fu/gem_version.rb +9 -11
  31. data/lib/metric_fu/generator.rb +5 -8
  32. data/lib/metric_fu/io.rb +13 -15
  33. data/lib/metric_fu/loader.rb +17 -18
  34. data/lib/metric_fu/logger.rb +15 -18
  35. data/lib/metric_fu/logging/mf_debugger.rb +4 -4
  36. data/lib/metric_fu/metric.rb +11 -12
  37. data/lib/metric_fu/metrics/cane/generator.rb +10 -9
  38. data/lib/metric_fu/metrics/cane/grapher.rb +5 -7
  39. data/lib/metric_fu/metrics/cane/metric.rb +6 -8
  40. data/lib/metric_fu/metrics/cane/report.html.erb +3 -3
  41. data/lib/metric_fu/metrics/cane/violations.rb +6 -6
  42. data/lib/metric_fu/metrics/churn/generator.rb +2 -6
  43. data/lib/metric_fu/metrics/churn/hotspot.rb +1 -3
  44. data/lib/metric_fu/metrics/churn/metric.rb +5 -7
  45. data/lib/metric_fu/metrics/flay/generator.rb +7 -11
  46. data/lib/metric_fu/metrics/flay/grapher.rb +5 -6
  47. data/lib/metric_fu/metrics/flay/hotspot.rb +5 -7
  48. data/lib/metric_fu/metrics/flay/metric.rb +5 -7
  49. data/lib/metric_fu/metrics/flog/generator.rb +22 -23
  50. data/lib/metric_fu/metrics/flog/grapher.rb +11 -11
  51. data/lib/metric_fu/metrics/flog/hotspot.rb +3 -5
  52. data/lib/metric_fu/metrics/flog/metric.rb +3 -5
  53. data/lib/metric_fu/metrics/hotspots/analysis/analyzed_problems.rb +0 -1
  54. data/lib/metric_fu/metrics/hotspots/analysis/analyzer_tables.rb +19 -18
  55. data/lib/metric_fu/metrics/hotspots/analysis/grouping.rb +0 -2
  56. data/lib/metric_fu/metrics/hotspots/analysis/groupings.rb +1 -3
  57. data/lib/metric_fu/metrics/hotspots/analysis/problems.rb +4 -6
  58. data/lib/metric_fu/metrics/hotspots/analysis/ranked_problem_location.rb +14 -9
  59. data/lib/metric_fu/metrics/hotspots/analysis/ranking.rb +4 -5
  60. data/lib/metric_fu/metrics/hotspots/analysis/rankings.rb +1 -3
  61. data/lib/metric_fu/metrics/hotspots/analysis/record.rb +3 -5
  62. data/lib/metric_fu/metrics/hotspots/analysis/scoring_strategies.rb +0 -2
  63. data/lib/metric_fu/metrics/hotspots/analysis/table.rb +3 -4
  64. data/lib/metric_fu/metrics/hotspots/generator.rb +3 -6
  65. data/lib/metric_fu/metrics/hotspots/hotspot.rb +13 -13
  66. data/lib/metric_fu/metrics/hotspots/hotspot_analyzer.rb +5 -8
  67. data/lib/metric_fu/metrics/hotspots/metric.rb +1 -3
  68. data/lib/metric_fu/metrics/hotspots/report.html.erb +1 -1
  69. data/lib/metric_fu/metrics/rails_best_practices/generator.rb +10 -12
  70. data/lib/metric_fu/metrics/rails_best_practices/grapher.rb +5 -6
  71. data/lib/metric_fu/metrics/rails_best_practices/metric.rb +1 -3
  72. data/lib/metric_fu/metrics/rcov/external_client.rb +1 -3
  73. data/lib/metric_fu/metrics/rcov/generator.rb +13 -15
  74. data/lib/metric_fu/metrics/rcov/grapher.rb +6 -7
  75. data/lib/metric_fu/metrics/rcov/hotspot.rb +5 -7
  76. data/lib/metric_fu/metrics/rcov/metric.rb +5 -7
  77. data/lib/metric_fu/metrics/rcov/rcov_format_coverage.rb +16 -55
  78. data/lib/metric_fu/metrics/rcov/rcov_line.rb +48 -0
  79. data/lib/metric_fu/metrics/rcov/report.html.erb +2 -2
  80. data/lib/metric_fu/metrics/rcov/simplecov_formatter.rb +10 -11
  81. data/lib/metric_fu/metrics/reek/generator.rb +22 -23
  82. data/lib/metric_fu/metrics/reek/grapher.rb +5 -6
  83. data/lib/metric_fu/metrics/reek/hotspot.rb +5 -7
  84. data/lib/metric_fu/metrics/reek/metric.rb +2 -4
  85. data/lib/metric_fu/metrics/roodi/generator.rb +9 -10
  86. data/lib/metric_fu/metrics/roodi/grapher.rb +5 -6
  87. data/lib/metric_fu/metrics/roodi/hotspot.rb +1 -3
  88. data/lib/metric_fu/metrics/roodi/metric.rb +2 -4
  89. data/lib/metric_fu/metrics/saikuro/generator.rb +23 -27
  90. data/lib/metric_fu/metrics/saikuro/hotspot.rb +1 -3
  91. data/lib/metric_fu/metrics/saikuro/metric.rb +7 -8
  92. data/lib/metric_fu/metrics/saikuro/parsing_element.rb +6 -8
  93. data/lib/metric_fu/metrics/saikuro/report.html.erb +1 -1
  94. data/lib/metric_fu/metrics/saikuro/scratch_file.rb +24 -29
  95. data/lib/metric_fu/metrics/stats/generator.rb +9 -12
  96. data/lib/metric_fu/metrics/stats/grapher.rb +8 -9
  97. data/lib/metric_fu/metrics/stats/hotspot.rb +1 -3
  98. data/lib/metric_fu/metrics/stats/metric.rb +3 -5
  99. data/lib/metric_fu/reporter.rb +1 -1
  100. data/lib/metric_fu/reporting/graphs/graph.rb +8 -12
  101. data/lib/metric_fu/reporting/graphs/grapher.rb +7 -9
  102. data/lib/metric_fu/reporting/result.rb +0 -3
  103. data/lib/metric_fu/run.rb +12 -3
  104. data/lib/metric_fu/tasks/metric_fu.rake +8 -8
  105. data/lib/metric_fu/templates/configuration.rb +2 -5
  106. data/lib/metric_fu/templates/metrics_template.rb +19 -19
  107. data/lib/metric_fu/templates/report.rb +5 -8
  108. data/lib/metric_fu/templates/template.rb +20 -24
  109. data/lib/metric_fu/utility.rb +7 -8
  110. data/lib/metric_fu/version.rb +1 -1
  111. data/metric_fu.gemspec +31 -32
  112. data/spec/cli/helper_spec.rb +7 -14
  113. data/spec/dummy/lib/bad_encoding.rb +1 -1
  114. data/spec/fixtures/coverage-153.rb +2 -2
  115. data/spec/fixtures/coverage.rb +2 -2
  116. data/spec/metric_fu/calculate_spec.rb +3 -3
  117. data/spec/metric_fu/configuration_spec.rb +70 -82
  118. data/spec/metric_fu/data_structures/line_numbers_spec.rb +3 -5
  119. data/spec/metric_fu/data_structures/location_spec.rb +13 -31
  120. data/spec/metric_fu/formatter/configuration_spec.rb +11 -13
  121. data/spec/metric_fu/formatter/html_spec.rb +21 -28
  122. data/spec/metric_fu/formatter/yaml_spec.rb +9 -17
  123. data/spec/metric_fu/formatter_spec.rb +6 -6
  124. data/spec/metric_fu/gem_version_spec.rb +3 -5
  125. data/spec/metric_fu/generator_spec.rb +28 -38
  126. data/spec/metric_fu/loader_spec.rb +1 -3
  127. data/spec/metric_fu/metric_spec.rb +17 -21
  128. data/spec/metric_fu/metrics/cane/configuration_spec.rb +8 -8
  129. data/spec/metric_fu/metrics/cane/generator_spec.rb +26 -29
  130. data/spec/metric_fu/metrics/churn/configuration_spec.rb +6 -8
  131. data/spec/metric_fu/metrics/churn/generator_spec.rb +6 -11
  132. data/spec/metric_fu/metrics/flay/configuration_spec.rb +6 -8
  133. data/spec/metric_fu/metrics/flay/generator_spec.rb +36 -37
  134. data/spec/metric_fu/metrics/flay/grapher_spec.rb +2 -2
  135. data/spec/metric_fu/metrics/flog/configuration_spec.rb +11 -13
  136. data/spec/metric_fu/metrics/flog/generator_spec.rb +29 -31
  137. data/spec/metric_fu/metrics/flog/grapher_spec.rb +8 -10
  138. data/spec/metric_fu/metrics/hotspots/analysis/analyzed_problems_spec.rb +18 -24
  139. data/spec/metric_fu/metrics/hotspots/analysis/analyzer_tables_spec.rb +12 -17
  140. data/spec/metric_fu/metrics/hotspots/analysis/ranking_spec.rb +2 -6
  141. data/spec/metric_fu/metrics/hotspots/analysis/rankings_spec.rb +5 -14
  142. data/spec/metric_fu/metrics/hotspots/analysis/table_spec.rb +1 -3
  143. data/spec/metric_fu/metrics/hotspots/generator_spec.rb +6 -8
  144. data/spec/metric_fu/metrics/hotspots/hotspot_analyzer_spec.rb +1 -3
  145. data/spec/metric_fu/metrics/hotspots/hotspot_spec.rb +4 -5
  146. data/spec/metric_fu/metrics/rails_best_practices/configuration_spec.rb +6 -10
  147. data/spec/metric_fu/metrics/rails_best_practices/generator_spec.rb +2 -3
  148. data/spec/metric_fu/metrics/rails_best_practices/grapher_spec.rb +3 -3
  149. data/spec/metric_fu/metrics/rcov/configuration_spec.rb +20 -22
  150. data/spec/metric_fu/metrics/rcov/generator_spec.rb +6 -10
  151. data/spec/metric_fu/metrics/rcov/grapher_spec.rb +2 -2
  152. data/spec/metric_fu/metrics/rcov/hotspot_spec.rb +8 -8
  153. data/spec/metric_fu/metrics/rcov/rcov_line_spec.rb +89 -0
  154. data/spec/metric_fu/metrics/rcov/simplecov_formatter_spec.rb +31 -33
  155. data/spec/metric_fu/metrics/reek/configuration_spec.rb +6 -6
  156. data/spec/metric_fu/metrics/reek/generator_spec.rb +19 -20
  157. data/spec/metric_fu/metrics/reek/grapher_spec.rb +4 -4
  158. data/spec/metric_fu/metrics/roodi/configuration_spec.rb +7 -9
  159. data/spec/metric_fu/metrics/roodi/generator_spec.rb +3 -3
  160. data/spec/metric_fu/metrics/roodi/grapher_spec.rb +2 -2
  161. data/spec/metric_fu/metrics/saikuro/configuration_spec.rb +18 -19
  162. data/spec/metric_fu/metrics/saikuro/generator_spec.rb +7 -7
  163. data/spec/metric_fu/metrics/stats/generator_spec.rb +9 -9
  164. data/spec/metric_fu/metrics/stats/grapher_spec.rb +2 -2
  165. data/spec/metric_fu/reporter_spec.rb +3 -4
  166. data/spec/metric_fu/reporting/graphs/graph_spec.rb +1 -4
  167. data/spec/metric_fu/reporting/graphs/grapher_spec.rb +5 -5
  168. data/spec/metric_fu/reporting/result_spec.rb +9 -11
  169. data/spec/metric_fu/run_spec.rb +18 -32
  170. data/spec/metric_fu/templates/configuration_spec.rb +28 -34
  171. data/spec/metric_fu/templates/metrics_template_spec.rb +11 -0
  172. data/spec/metric_fu/templates/report_spec.rb +4 -4
  173. data/spec/metric_fu/templates/template_spec.rb +62 -48
  174. data/spec/metric_fu/utility_spec.rb +2 -2
  175. data/spec/metric_fu_spec.rb +5 -7
  176. data/spec/shared/configured.rb +9 -11
  177. data/spec/shared/test_coverage.rb +5 -9
  178. data/spec/spec_helper.rb +9 -9
  179. data/spec/support/deferred_garbaged_collection.rb +1 -2
  180. data/spec/support/matcher_create_file.rb +2 -4
  181. data/spec/support/matcher_create_files.rb +2 -4
  182. data/spec/support/suite.rb +3 -3
  183. data/spec/support/test_fixtures.rb +5 -7
  184. data/spec/support/timeout.rb +1 -1
  185. data/spec/support/usage_test.rb +23 -24
  186. data/spec/usage_test_spec.rb +18 -20
  187. metadata +12 -2
  188. metadata.gz.sig +0 -0
@@ -1,14 +1,13 @@
1
1
  module MetricFu
2
2
  class MetricReek < Metric
3
-
4
3
  def name
5
4
  :reek
6
5
  end
7
6
 
8
7
  def default_run_options
9
8
  {
10
- :dirs_to_reek => MetricFu::Io::FileSystem.directory('code_dirs'),
11
- :config_file_pattern => nil,
9
+ dirs_to_reek: MetricFu::Io::FileSystem.directory("code_dirs"),
10
+ config_file_pattern: nil,
12
11
  }
13
12
  end
14
13
 
@@ -23,6 +22,5 @@ module MetricFu
23
22
  def activate
24
23
  super
25
24
  end
26
-
27
25
  end
28
26
  end
@@ -1,40 +1,39 @@
1
1
  module MetricFu
2
2
  class RoodiGenerator < Generator
3
-
4
3
  def self.metric
5
4
  :roodi
6
5
  end
7
6
 
8
7
  def emit
9
- files_to_analyze = options[:dirs_to_roodi].map{|dir| Dir[File.join(dir, "**/*.rb")] }
8
+ files_to_analyze = options[:dirs_to_roodi].map { |dir| Dir[File.join(dir, "**/*.rb")] }
10
9
  files = remove_excluded_files(files_to_analyze.flatten)
11
10
  config = options[:roodi_config] ? "-config=#{options[:roodi_config]}" : ""
12
- args = "#{config} #{files.join(" ")}"
11
+ args = "#{config} #{files.join(' ')}"
13
12
  @output = run!(args)
14
13
  end
15
14
 
16
15
  def analyze
17
16
  @output = MetricFu::Utility.strip_escape_codes(@output)
18
- @matches = @output.chomp.split("\n").map{|m| m.split(" - ") }
17
+ @matches = @output.chomp.split("\n").map { |m| m.split(" - ") }
19
18
  total = @matches.pop
20
- @matches.reject! {|array| array.size < 2 }
19
+ @matches.reject! { |array| array.size < 2 }
21
20
  @matches.map! do |match|
22
- file, line = match[0].split(':')
21
+ file, line = match[0].split(":")
23
22
  problem = match[1]
24
- {:file => file, :line => line, :problem => problem}
23
+ { file: file, line: line, problem: problem }
25
24
  end
26
- @roodi_results = {:total => total, :problems => @matches}
25
+ @roodi_results = { total: total, problems: @matches }
27
26
  end
28
27
 
29
28
  def to_h
30
- {:roodi => @roodi_results}
29
+ { roodi: @roodi_results }
31
30
  end
32
31
 
33
32
  def per_file_info(out)
34
33
  @matches.each do |match|
35
34
  out[match[:file]] ||= {}
36
35
  out[match[:file]][match[:line]] ||= []
37
- out[match[:file]][match[:line]] << {:type => :roodi, :description => match[:problem]}
36
+ out[match[:file]][match[:line]] << { type: :roodi, description: match[:problem] }
38
37
  end
39
38
  end
40
39
  end
@@ -1,4 +1,4 @@
1
- MetricFu.reporting_require { 'graphs/grapher' }
1
+ MetricFu.reporting_require { "graphs/grapher" }
2
2
  module MetricFu
3
3
  class RoodiGrapher < Grapher
4
4
  attr_accessor :roodi_count, :labels
@@ -16,23 +16,22 @@ module MetricFu
16
16
  def get_metrics(metrics, date)
17
17
  if metrics && metrics[:roodi]
18
18
  @roodi_count.push(metrics[:roodi][:problems].size)
19
- @labels.update( { @labels.size => date })
19
+ @labels.update(@labels.size => date)
20
20
  end
21
21
  end
22
22
 
23
23
  def title
24
- 'Roodi: design problems'
24
+ "Roodi: design problems"
25
25
  end
26
26
 
27
27
  def data
28
28
  [
29
- ['roodi', @roodi_count.join(',')]
29
+ ["roodi", @roodi_count.join(",")]
30
30
  ]
31
31
  end
32
32
 
33
33
  def output_filename
34
- 'roodi.js'
34
+ "roodi.js"
35
35
  end
36
-
37
36
  end
38
37
  end
@@ -1,5 +1,4 @@
1
1
  class MetricFu::RoodiHotspot < MetricFu::Hotspot
2
-
3
2
  COLUMNS = %w{problems}
4
3
 
5
4
  def columns
@@ -23,7 +22,7 @@ class MetricFu::RoodiHotspot < 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
  Array(data[:problems]).each do |problem|
28
27
  table << {
29
28
  "metric" => name,
@@ -37,5 +36,4 @@ class MetricFu::RoodiHotspot < MetricFu::Hotspot
37
36
  occurences = group.size
38
37
  "found #{occurences} design problems"
39
38
  end
40
-
41
39
  end
@@ -1,13 +1,12 @@
1
1
  module MetricFu
2
2
  class MetricRoodi < Metric
3
-
4
3
  def name
5
4
  :roodi
6
5
  end
7
6
 
8
7
  def default_run_options
9
- { :dirs_to_roodi => MetricFu::Io::FileSystem.directory('code_dirs'),
10
- :roodi_config => "#{MetricFu::Io::FileSystem.directory('root_directory')}/config/roodi_config.yml"}
8
+ { dirs_to_roodi: MetricFu::Io::FileSystem.directory("code_dirs"),
9
+ roodi_config: "#{MetricFu::Io::FileSystem.directory('root_directory')}/config/roodi_config.yml" }
11
10
  end
12
11
 
13
12
  def has_graph?
@@ -21,6 +20,5 @@ module MetricFu
21
20
  def activate
22
21
  super
23
22
  end
24
-
25
23
  end
26
24
  end
@@ -1,12 +1,10 @@
1
1
  # encoding: utf-8
2
- MetricFu.lib_require { 'utility' }
3
- MetricFu.metrics_require { 'saikuro/scratch_file' }
4
- MetricFu.metrics_require { 'saikuro/parsing_element' }
5
- MetricFu.data_structures_require { 'line_numbers' }
2
+ MetricFu.lib_require { "utility" }
3
+ MetricFu.metrics_require { "saikuro/scratch_file" }
4
+ MetricFu.metrics_require { "saikuro/parsing_element" }
5
+ MetricFu.data_structures_require { "line_numbers" }
6
6
  module MetricFu
7
-
8
7
  class SaikuroGenerator < MetricFu::Generator
9
-
10
8
  def self.metric
11
9
  :saikuro
12
10
  end
@@ -32,11 +30,11 @@ module MetricFu
32
30
  def to_h
33
31
  @saikuro_data = {
34
32
  files: files_with_relative_paths(@files),
35
- classes: @classes.map { |c| c.to_h },
36
- methods: @meths.map { |m| m.to_h },
37
- }
33
+ classes: @classes.map(&:to_h),
34
+ methods: @meths.map(&:to_h),
35
+ }
38
36
  clear_scratch_files!
39
- {:saikuro => @saikuro_data}
37
+ { saikuro: @saikuro_data }
40
38
  end
41
39
 
42
40
  def per_file_info(out)
@@ -53,12 +51,12 @@ module MetricFu
53
51
  filename = file_data[:filename]
54
52
  output = out[filename]
55
53
  method_data_for_file_data(file_data) do |method_data|
56
- line = line_numbers.start_line_for_method(method_data[:name]).to_s
57
- result = {
58
- :type => :saikuro,
59
- :description => "Complexity #{method_data[:complexity]}"
60
- }
61
- output[line] << result
54
+ line = line_numbers.start_line_for_method(method_data[:name]).to_s
55
+ result = {
56
+ type: :saikuro,
57
+ description: "Complexity #{method_data[:complexity]}"
58
+ }
59
+ output[line] << result
62
60
  end
63
61
  out
64
62
  end
@@ -70,7 +68,7 @@ module MetricFu
70
68
  mf_log "ruby_parser blew up while trying to parse #{file_path}. You won't have method level Saikuro information for this file."
71
69
  end
72
70
 
73
- def method_data_for_file_data(file_data, &block)
71
+ def method_data_for_file_data(file_data, &_block)
74
72
  return unless block_given?
75
73
  file_data[:classes].each do |class_data|
76
74
  class_data[:methods].each do |method_data|
@@ -82,7 +80,7 @@ module MetricFu
82
80
  private
83
81
 
84
82
  def erb_file?(filename)
85
- File.extname(filename) == '.erb'
83
+ File.extname(filename) == ".erb"
86
84
  end
87
85
 
88
86
  def file_not_exists?(filename)
@@ -90,7 +88,7 @@ module MetricFu
90
88
  end
91
89
 
92
90
  def sort_methods(methods)
93
- methods.sort_by {|method| method.complexity.to_i}.reverse
91
+ methods.sort_by { |method| method.complexity.to_i }.reverse
94
92
  end
95
93
 
96
94
  def assemble_methods(files)
@@ -107,23 +105,23 @@ module MetricFu
107
105
  end
108
106
 
109
107
  def sort_classes(classes)
110
- classes.sort_by {|k| k.complexity.to_i}.reverse
108
+ classes.sort_by { |k| k.complexity.to_i }.reverse
111
109
  end
112
110
 
113
111
  def assemble_classes(files)
114
- files.map {|f| f.elements}.flatten
112
+ files.map(&:elements).flatten
115
113
  end
116
114
 
117
115
  def sort_files(files)
118
116
  files.sort_by do |file|
119
117
  file.elements.
120
- max {|a,b| a.complexity.to_i <=> b.complexity.to_i}.
121
- complexity.to_i
118
+ max { |a, b| a.complexity.to_i <=> b.complexity.to_i }.
119
+ complexity.to_i
122
120
  end.reverse
123
121
  end
124
122
 
125
123
  def assemble_files
126
- SaikuroScratchFile.assemble_files( Dir.glob("#{metric_directory}/**/*.html") )
124
+ SaikuroScratchFile.assemble_files(Dir.glob("#{metric_directory}/**/*.html"))
127
125
  end
128
126
 
129
127
  def files_with_relative_paths(files)
@@ -136,14 +134,12 @@ module MetricFu
136
134
 
137
135
  def file_relative_path(file)
138
136
  filepath = file.filepath
139
- path = filepath.gsub(/^#{metric_directory}\//, '')
137
+ path = filepath.gsub(/^#{metric_directory}\//, "")
140
138
  "#{path}/#{file.filename}"
141
139
  end
142
140
 
143
141
  def clear_scratch_files!
144
142
  MetricFu::Utility.rm_rf(metric_directory)
145
143
  end
146
-
147
144
  end
148
-
149
145
  end
@@ -1,5 +1,4 @@
1
1
  class MetricFu::SaikuroHotspot < MetricFu::Hotspot
2
-
3
2
  COLUMNS = %w{lines complexity}
4
3
 
5
4
  def columns
@@ -47,7 +46,6 @@ class MetricFu::SaikuroHotspot < MetricFu::Hotspot
47
46
  def present_group(group)
48
47
  occurences = group.size
49
48
  complexity = get_mean(group.column("complexity"))
50
- "#{"average " if occurences > 1}complexity is %.1f" % complexity
49
+ "#{'average ' if occurences > 1}complexity is %.1f" % complexity
51
50
  end
52
-
53
51
  end
@@ -1,19 +1,18 @@
1
1
  module MetricFu
2
2
  class MetricSaikuro < Metric
3
-
4
3
  def name
5
4
  :saikuro
6
5
  end
7
6
 
8
7
  def default_run_options
9
8
  {
10
- :output_directory => MetricFu::Io::FileSystem.scratch_directory(name),
11
- :input_directory =>MetricFu::Io::FileSystem.directory('code_dirs'),
12
- :cyclo => "",
13
- :filter_cyclo => "0",
14
- :warn_cyclo => "5",
15
- :error_cyclo => "7",
16
- :formater => "text",
9
+ output_directory: MetricFu::Io::FileSystem.scratch_directory(name),
10
+ input_directory: MetricFu::Io::FileSystem.directory("code_dirs"),
11
+ cyclo: "",
12
+ filter_cyclo: "0",
13
+ warn_cyclo: "5",
14
+ error_cyclo: "7",
15
+ formater: "text",
17
16
  }
18
17
  end
19
18
 
@@ -1,10 +1,9 @@
1
1
  module MetricFu
2
2
  class SaikuroParsingElement
3
-
4
- TYPE_REGEX=/Type:(.*) Name/
5
- NAME_REGEX=/Name:(.*) Complexity/
6
- COMPLEXITY_REGEX=/Complexity:(.*) Lines/
7
- LINES_REGEX=/Lines:(.*)/
3
+ TYPE_REGEX = /Type:(.*) Name/
4
+ NAME_REGEX = /Name:(.*) Complexity/
5
+ COMPLEXITY_REGEX = /Complexity:(.*) Lines/
6
+ LINES_REGEX = /Lines:(.*)/
8
7
 
9
8
  attr_reader :complexity, :lines, :defs, :element_type
10
9
  attr_accessor :name
@@ -23,7 +22,7 @@ module MetricFu
23
22
  end
24
23
 
25
24
  def to_h
26
- base = {:name => @name, :complexity => @complexity.to_i, :lines => @lines.to_i}
25
+ base = { name: @name, complexity: @complexity.to_i, lines: @lines.to_i }
27
26
  unless @defs.empty?
28
27
  defs = @defs.map do |my_def|
29
28
  my_def = my_def.to_h
@@ -32,8 +31,7 @@ module MetricFu
32
31
  end
33
32
  base[:defs] = defs
34
33
  end
35
- return base
34
+ base
36
35
  end
37
-
38
36
  end
39
37
  end
@@ -40,7 +40,7 @@
40
40
  <% @saikuro[:files].each do |file| %>
41
41
  <% file[:classes].each do |klass| %>
42
42
  <% if !klass[:methods].empty? %>
43
- <h3><%= file[:filename] %></h3>
43
+ <h3><%=link_to_filename(file[:filename])%></h3>
44
44
  <h4>Class : <%= klass[:class_name] %></h4>
45
45
  <h5>Total complexity : <%= klass[:complexity] %></h5>
46
46
  <h5>Total lines : <%= klass[:lines] %></h5>
@@ -1,7 +1,6 @@
1
- MetricFu.metrics_require { 'saikuro/parsing_element' }
1
+ MetricFu.metrics_require { "saikuro/parsing_element" }
2
2
  module MetricFu
3
3
  class SaikuroScratchFile
4
-
5
4
  def self.assemble_files(glob)
6
5
  files = []
7
6
  glob.each do |path|
@@ -36,7 +35,7 @@ module MetricFu
36
35
  end
37
36
 
38
37
  def filename
39
- File.basename(@path, '_cyclo.html')
38
+ File.basename(@path, "_cyclo.html")
40
39
  end
41
40
 
42
41
  def filepath
@@ -45,38 +44,35 @@ module MetricFu
45
44
 
46
45
  def to_h
47
46
  merge_classes
48
- {:classes => @elements}
47
+ { classes: @elements }
49
48
  end
50
49
 
51
50
  def get_elements(io)
52
- begin
53
- while (line = io.readline) do
54
- return [] if line.nil? || line !~ /\S/
55
- element ||= nil
56
- if line.match(/START/)
57
- unless element.nil?
58
- @elements << element
59
- element = nil
60
- end
61
- line = io.readline
62
- element = MetricFu::SaikuroParsingElement.new(line)
63
- elsif line.match(/END/)
64
- @elements << element if element
51
+ while (line = io.readline)
52
+ return [] if line.nil? || line !~ /\S/
53
+ element ||= nil
54
+ if line.match(/START/)
55
+ unless element.nil?
56
+ @elements << element
65
57
  element = nil
66
- else
67
- element << line if element
68
58
  end
59
+ line = io.readline
60
+ element = MetricFu::SaikuroParsingElement.new(line)
61
+ elsif line.match(/END/)
62
+ @elements << element if element
63
+ element = nil
64
+ else
65
+ element << line if element
69
66
  end
70
- rescue EOFError
71
- nil
72
67
  end
68
+ rescue EOFError
69
+ nil
73
70
  end
74
71
 
75
-
76
72
  def merge_classes
77
73
  new_elements = []
78
74
  get_class_names.each do |target_class|
79
- elements = @elements.find_all {|el| el.name == target_class }
75
+ elements = @elements.find_all { |el| el.name == target_class }
80
76
  complexity = 0
81
77
  lines = 0
82
78
  defns = []
@@ -86,12 +82,12 @@ module MetricFu
86
82
  defns << el.defs
87
83
  end
88
84
 
89
- new_element = {:class_name => target_class,
90
- :complexity => complexity,
91
- :lines => lines,
92
- :methods => defns.flatten.map {|d| d.to_h}}
85
+ new_element = { class_name: target_class,
86
+ complexity: complexity,
87
+ lines: lines,
88
+ methods: defns.flatten.map(&:to_h) }
93
89
  new_element[:methods] = new_element[:methods].
94
- sort_by {|x| x[:complexity] }.
90
+ sort_by { |x| x[:complexity] }.
95
91
  reverse
96
92
 
97
93
  new_elements << new_element
@@ -108,6 +104,5 @@ module MetricFu
108
104
  end
109
105
  class_names
110
106
  end
111
-
112
107
  end
113
108
  end