class MetricFu::CaneGenerator
Attributes
total_violations[R]
violations[R]
Public Class Methods
metric()
click to toggle source
# File lib/metric_fu/metrics/cane/generator.rb, line 6 def self.metric :cane end
Public Instance Methods
analyze()
click to toggle source
# File lib/metric_fu/metrics/cane/generator.rb, line 20 def analyze @violations = violations_by_category extract_total_violations end
emit()
click to toggle source
# File lib/metric_fu/metrics/cane/generator.rb, line 10 def emit args = [ abc_max_param, style_measure_param, no_doc_param, no_readme_param ].join @output = run!(args) end
to_h()
click to toggle source
# File lib/metric_fu/metrics/cane/generator.rb, line 25 def to_h { cane: { total_violations: @total_violations, violations: @violations, total: @total } } end
Private Instance Methods
abc_max_param()
click to toggle source
# File lib/metric_fu/metrics/cane/generator.rb, line 31 def abc_max_param options[:abc_max] ? " --abc-max #{options[:abc_max]}" : "" end
category_from(description)
click to toggle source
# File lib/metric_fu/metrics/cane/generator.rb, line 56 def category_from(description) category_descriptions = { abc_complexity: /ABC complexity/, line_style: /style requirements/, comment: /comment/, documentation: /documentation/ } category, desc_matcher = category_descriptions.find { |_k, v| description =~ v } mf_debug desc_matcher.inspect category end
extract_total_violations()
click to toggle source
# File lib/metric_fu/metrics/cane/generator.rb, line 87 def extract_total_violations if @output =~ /Total Violations: (\d+)/ @total_violations = $1.to_i @total = "Total Violations #{@total_violations}" else @total_violations = 0 end end
no_doc_param()
click to toggle source
# File lib/metric_fu/metrics/cane/generator.rb, line 39 def no_doc_param options[:no_doc] == "y" ? " --no-doc" : "" end
no_readme_param()
click to toggle source
# File lib/metric_fu/metrics/cane/generator.rb, line 43 def no_readme_param options[:no_readme] == "y" ? " --no-readme" : "" end
style_measure_param()
click to toggle source
# File lib/metric_fu/metrics/cane/generator.rb, line 35 def style_measure_param options[:line_length] ? " --style-measure #{options[:line_length]}" : "" end
violation_type_for(category)
click to toggle source
# File lib/metric_fu/metrics/cane/generator.rb, line 72 def violation_type_for(category) case category when :abc_complexity CaneViolations::AbcComplexity when :line_style CaneViolations::LineStyle when :comment CaneViolations::Comment when :documentation CaneViolations::Documentation else CaneViolations::Others end end
violations_by_category()
click to toggle source
# File lib/metric_fu/metrics/cane/generator.rb, line 47 def violations_by_category violations_output = @output.scan(/(.*?)\n\n(.*?)\n\n/m) violations_output.each_with_object({}) do |(category_desc, violation_list), violations| category = category_from(category_desc) || :others violations[category] ||= [] violations[category] += violations_for(category, violation_list) end end
violations_for(category, violation_list)
click to toggle source
# File lib/metric_fu/metrics/cane/generator.rb, line 68 def violations_for(category, violation_list) violation_type_for(category).parse(violation_list) end