class Railroader::Report::Base
Base
class for report formats
Constants
- TEXT_CONFIDENCE
Attributes
checks[R]
tracker[R]
Public Class Methods
new(app_tree, tracker)
click to toggle source
# File lib/railroader/report/report_base.rb, line 16 def initialize app_tree, tracker @app_tree = app_tree @tracker = tracker @checks = tracker.checks @ignore_filter = tracker.ignored_filter @highlight_user_input = tracker.options[:highlight_user_input] @warnings_summary = nil end
Public Instance Methods
all_warnings()
click to toggle source
# File lib/railroader/report/report_base.rb, line 214 def all_warnings if @ignore_filter @all_warnings ||= @ignore_filter.shown_warnings else @all_warnings ||= tracker.checks.all_warnings end end
controller_warnings()
click to toggle source
# File lib/railroader/report/report_base.rb, line 244 def controller_warnings filter_warnings tracker.checks.controller_warnings end
convert_controller_warning(warning, original)
click to toggle source
# File lib/railroader/report/report_base.rb, line 179 def convert_controller_warning warning, original convert_warning warning, original end
convert_ignored_warning(warning, original)
click to toggle source
# File lib/railroader/report/report_base.rb, line 183 def convert_ignored_warning warning, original convert_warning warning, original end
convert_model_warning(warning, original)
click to toggle source
# File lib/railroader/report/report_base.rb, line 175 def convert_model_warning warning, original convert_warning warning, original end
convert_template_warning(warning, original)
click to toggle source
# File lib/railroader/report/report_base.rb, line 171 def convert_template_warning warning, original convert_warning warning, original end
convert_to_rows(warnings, type = :warning)
click to toggle source
# File lib/railroader/report/report_base.rb, line 146 def convert_to_rows warnings, type = :warning warnings.map do |warning| w = warning.to_row type case type when :warning convert_warning w, warning when :template convert_template_warning w, warning when :model convert_model_warning w, warning when :controller convert_controller_warning w, warning when :ignored convert_ignored_warning w, warning end end end
convert_warning(warning, original)
click to toggle source
# File lib/railroader/report/report_base.rb, line 165 def convert_warning warning, original warning["Confidence"] = TEXT_CONFIDENCE[warning["Confidence"]] warning["Message"] = text_message original, warning["Message"] warning end
filter_warnings(warnings)
click to toggle source
# File lib/railroader/report/report_base.rb, line 222 def filter_warnings warnings if @ignore_filter warnings.reject do |w| @ignore_filter.ignored? w end else warnings end end
generate_controller_warnings()
click to toggle source
Generate table of controller warnings or nil if no warnings
# File lib/railroader/report/report_base.rb, line 116 def generate_controller_warnings render_warnings controller_warnings, :controller, 'controller_warnings', ['Confidence', 'Controller', 'Warning Type', 'Message'], 'Controller' end
generate_controllers()
click to toggle source
Generate table of controllers and routes found for those controllers
# File lib/railroader/report/report_base.rb, line 36 def generate_controllers controller_rows = [] tracker.controllers.keys.map{|k| k.to_s}.sort.each do |name| name = name.to_sym c = tracker.controllers[name] if tracker.routes.include? :allow_all_actions or (tracker.routes[name] and tracker.routes[name].include? :allow_all_actions) routes = c.methods_public.keys.map{|e| e.to_s}.sort.join(", ") elsif tracker.routes[name].nil? # No routes defined for this controller. # This can happen when it is only a parent class # for other controllers, for example. routes = "[None]" else routes = (Set.new(c.methods_public.keys) & tracker.routes[name.to_sym]). to_a. map {|e| e.to_s}. sort. join(", ") end if routes == "" routes = "[None]" end controller_rows << { "Name" => name.to_s, "Parent" => c.parent.to_s, "Includes" => c.includes.join(", "), "Routes" => routes } end cols = ['Name', 'Parent', 'Includes', 'Routes'] locals = {:controller_rows => controller_rows} values = controller_rows.collect{|row| row.values_at(*cols) } render_array('controller_overview', cols, values, locals) end
generate_errors()
click to toggle source
Generate table of errors or return nil if no errors
# File lib/railroader/report/report_base.rb, line 78 def generate_errors values = tracker.errors.collect{|error| [error[:error], error[:backtrace][0]]} render_array('error_overview', ['Error', 'Location'], values, {:tracker => tracker}) end
generate_ignored_warnings()
click to toggle source
# File lib/railroader/report/report_base.rb, line 124 def generate_ignored_warnings render_warnings ignored_warnings, :ignored, 'ignored_warnings', ['Confidence', 'Warning Type', 'File', 'Message'], 'Warning Type' end
generate_model_warnings()
click to toggle source
Generate table of model warnings or return nil if no warnings
# File lib/railroader/report/report_base.rb, line 107 def generate_model_warnings render_warnings model_warnings, :model, 'model_warnings', ['Confidence', 'Model', 'Warning Type', 'Message'], 'Model' end
generate_obsolete()
click to toggle source
# File lib/railroader/report/report_base.rb, line 83 def generate_obsolete values = tracker.unused_fingerprints.collect{|fingerprint| [fingerprint] } render_array('obsolete_ignore_entries', ['fingerprint'], values, {:tracker => tracker}) end
generate_template_warnings()
click to toggle source
Generate table of template warnings or return nil if no warnings
# File lib/railroader/report/report_base.rb, line 97 def generate_template_warnings render_warnings template_warnings, :template, 'view_warnings', ['Confidence', 'Template', 'Warning Type', 'Message'], 'Template' end
generate_warning_overview()
click to toggle source
Generate table of how many warnings of each warning type were reported
# File lib/railroader/report/report_base.rb, line 26 def generate_warning_overview types = warnings_summary.keys types.delete :high_confidence values = types.sort.collect{|warning_type| [warning_type, warnings_summary[warning_type]] } locals = {:types => types, :warnings_summary => warnings_summary} render_array('warning_overview', ['Warning Type', 'Total'], values, locals) end
generate_warnings()
click to toggle source
# File lib/railroader/report/report_base.rb, line 88 def generate_warnings render_warnings generic_warnings, :warning, 'security_warnings', ["Confidence", "Class", "Method", "Warning Type", "Message"], 'Class' end
generic_warnings()
click to toggle source
# File lib/railroader/report/report_base.rb, line 232 def generic_warnings filter_warnings tracker.checks.warnings end
ignored_warnings()
click to toggle source
# File lib/railroader/report/report_base.rb, line 248 def ignored_warnings if @ignore_filter @ignore_filter.ignored_warnings else [] end end
model_warnings()
click to toggle source
# File lib/railroader/report/report_base.rb, line 240 def model_warnings filter_warnings tracker.checks.model_warnings end
number_of_templates(tracker)
click to toggle source
# File lib/railroader/report/report_base.rb, line 256 def number_of_templates tracker Set.new(tracker.templates.map {|k, v| v.name.to_s[/[^.]+/]}).length end
rails_version()
click to toggle source
# File lib/railroader/report/report_base.rb, line 270 def rails_version case when tracker.config.rails_version tracker.config.rails_version when tracker.options[:rails4] "4.x" when tracker.options[:rails3] "3.x" else "Unknown" end end
render_warnings(warnings, type, template, cols, sort_col)
click to toggle source
# File lib/railroader/report/report_base.rb, line 132 def render_warnings warnings, type, template, cols, sort_col unless warnings.empty? rows = sort(convert_to_rows(warnings, type), sort_col) values = rows.collect { |row| row.values_at(*cols) } locals = { :warnings => rows } render_array(template, cols, values, locals) else nil end end
sort(rows, sort_col)
click to toggle source
# File lib/railroader/report/report_base.rb, line 187 def sort rows, sort_col stabilizer = 0 rows.sort_by do |row| stabilizer += 1 row.values_at("Confidence", "Warning Type", sort_col) << stabilizer end end
template_warnings()
click to toggle source
# File lib/railroader/report/report_base.rb, line 236 def template_warnings filter_warnings tracker.checks.template_warnings end
text_message(warning, message)
click to toggle source
Escape warning message and highlight user input in text output
# File lib/railroader/report/report_base.rb, line 284 def text_message warning, message if @highlight_user_input and warning.user_input user_input = warning.format_user_input message.gsub(user_input, "+#{user_input}+") else message end end
warning_file(warning, absolute = @tracker.options[:absolute_paths])
click to toggle source
# File lib/railroader/report/report_base.rb, line 260 def warning_file warning, absolute = @tracker.options[:absolute_paths] return nil if warning.file.nil? if absolute warning.file else relative_path warning.file end end
warnings_summary()
click to toggle source
Return summary of warnings in hash and store in @warnings_summary
# File lib/railroader/report/report_base.rb, line 197 def warnings_summary return @warnings_summary if @warnings_summary summary = Hash.new(0) high_confidence_warnings = 0 [all_warnings].each do |warnings| warnings.each do |warning| summary[warning.warning_type.to_s] += 1 high_confidence_warnings += 1 if warning.confidence == 0 end end summary[:high_confidence] = high_confidence_warnings @warnings_summary = summary end