From 7624be20a52037945a623f953e6444a4f1e4846b Mon Sep 17 00:00:00 2001 From: Bart ten Brinke Date: Fri, 22 Mar 2013 09:34:12 +0100 Subject: [PATCH] Moved report stuff to the report directory --- lib/brakeman/intializers/fastercsv.rb | 9 --------- lib/brakeman/intializers/ok_json.rb | 9 --------- lib/brakeman/renderer.rb | 19 ------------------ lib/brakeman/report.rb | 19 ++++++++++++------ .../{ => report}/intializers/multi_json.rb | 11 ++++++++++ lib/brakeman/report/renderer.rb | 20 +++++++++++++++++++ .../templates/controller_overview.html.erb | 0 .../templates/controller_warnings.html.erb | 0 .../templates/error_overview.html.erb | 0 .../{ => report}/templates/header.html.erb | 0 .../templates/model_warnings.html.erb | 0 .../{ => report}/templates/overview.html.erb | 0 .../templates/security_warnings.html.erb | 0 .../templates/template_overview.html.erb | 0 .../templates/view_warnings.html.erb | 0 .../templates/warning_overview.html.erb | 0 16 files changed, 44 insertions(+), 43 deletions(-) delete mode 100644 lib/brakeman/intializers/fastercsv.rb delete mode 100644 lib/brakeman/intializers/ok_json.rb delete mode 100644 lib/brakeman/renderer.rb rename lib/brakeman/{ => report}/intializers/multi_json.rb (68%) create mode 100644 lib/brakeman/report/renderer.rb rename lib/brakeman/{ => report}/templates/controller_overview.html.erb (100%) rename lib/brakeman/{ => report}/templates/controller_warnings.html.erb (100%) rename lib/brakeman/{ => report}/templates/error_overview.html.erb (100%) rename lib/brakeman/{ => report}/templates/header.html.erb (100%) rename lib/brakeman/{ => report}/templates/model_warnings.html.erb (100%) rename lib/brakeman/{ => report}/templates/overview.html.erb (100%) rename lib/brakeman/{ => report}/templates/security_warnings.html.erb (100%) rename lib/brakeman/{ => report}/templates/template_overview.html.erb (100%) rename lib/brakeman/{ => report}/templates/view_warnings.html.erb (100%) rename lib/brakeman/{ => report}/templates/warning_overview.html.erb (100%) diff --git a/lib/brakeman/intializers/fastercsv.rb b/lib/brakeman/intializers/fastercsv.rb deleted file mode 100644 index 4b3b17cb..00000000 --- a/lib/brakeman/intializers/fastercsv.rb +++ /dev/null @@ -1,9 +0,0 @@ -if CSV.const_defined? :Reader - # Ruby 1.8 compatible - require 'fastercsv' - Object.send(:remove_const, :CSV) - CSV = FasterCSV -else - # CSV is now FasterCSV in ruby 1.9 -end - diff --git a/lib/brakeman/intializers/ok_json.rb b/lib/brakeman/intializers/ok_json.rb deleted file mode 100644 index 3060c4eb..00000000 --- a/lib/brakeman/intializers/ok_json.rb +++ /dev/null @@ -1,9 +0,0 @@ -#This is so OkJson will work with symbol values -if mj_engine == :ok_json - class Symbol - def to_json - self.to_s.inspect - end - end -end - diff --git a/lib/brakeman/renderer.rb b/lib/brakeman/renderer.rb deleted file mode 100644 index 85ed4168..00000000 --- a/lib/brakeman/renderer.rb +++ /dev/null @@ -1,19 +0,0 @@ -class Brakeman::Renderer - def initialize(template_file, hash = {}) - hash[:locals] ||= {} - hash[:locals].each do |key, value| - singleton_class.send(:define_method, key) { value } - end - - singleton_class.send(:define_method, 'template_file') { template_file } - - singleton_class.send(:define_method, 'template') { - File.read(File.expand_path("templates/#{template_file}.html.erb", File.dirname(__FILE__))) - } - end - - def render - ERB.new(template).result(binding) - end - -end diff --git a/lib/brakeman/report.rb b/lib/brakeman/report.rb index 23ac1437..f67882b6 100644 --- a/lib/brakeman/report.rb +++ b/lib/brakeman/report.rb @@ -7,8 +7,8 @@ require 'highline/system_extensions' require "csv" require 'multi_json' require 'brakeman/version' -require 'brakeman/renderer' -Dir[File.dirname(__FILE__) + 'initializers/*.rb'].each {|file| require file} +require 'brakeman/report/renderer' +Dir[File.dirname(__FILE__) + 'report/initializers/*.rb'].each {|file| require file} #Generates a report based on the Tracker and the results of #Tracker#run_checks. Be sure to +run_checks+ before generating @@ -18,6 +18,13 @@ class Brakeman::Report attr_reader :tracker, :checks + # Ruby 1.8 compatible + if CSV.const_defined? :Reader + require 'fastercsv' + Object.send(:remove_const, :CSV) + CSV = FasterCSV + end + TEXT_CONFIDENCE = [ "High", "Medium", "Weak" ] HTML_CONFIDENCE = [ "High", "Medium", @@ -44,7 +51,7 @@ class Brakeman::Report :number_of_templates => number_of_templates(@tracker), } - Brakeman::Renderer.new('overview', :locals => locals).render + Brakeman::Report::Renderer.new('overview', :locals => locals).render else Terminal::Table.new(:headings => ['Scanned/Reported', 'Total']) do |t| t.add_row ['Controllers', tracker.controllers.length] @@ -75,7 +82,7 @@ class Brakeman::Report def render_array(template, headings, value_array, locals, html = false) return if value_array.empty? if html - Brakeman::Renderer.new(template, :locals => locals).render + Brakeman::Report::Renderer.new(template, :locals => locals).render else Terminal::Table.new(:headings => headings) do |t| value_array.each { |value_row| t.add_row value_row } @@ -264,7 +271,7 @@ class Brakeman::Report template_rows = template_rows.sort_by{|name, value| name.to_s} if html - Brakeman::Renderer.new('template_overview', :locals => {:template_rows => template_rows}).render + Brakeman::Report::Renderer.new('template_overview', :locals => {:template_rows => template_rows}).render else output = '' template_rows.each do |template| @@ -413,7 +420,7 @@ class Brakeman::Report :brakeman_version => Brakeman::Version } - Brakeman::Renderer.new('header', :locals => locals).render + Brakeman::Report::Renderer.new('header', :locals => locals).render end #Generate header for text output diff --git a/lib/brakeman/intializers/multi_json.rb b/lib/brakeman/report/intializers/multi_json.rb similarity index 68% rename from lib/brakeman/intializers/multi_json.rb rename to lib/brakeman/report/intializers/multi_json.rb index e0fdd782..a8c48ce4 100644 --- a/lib/brakeman/intializers/multi_json.rb +++ b/lib/brakeman/report/intializers/multi_json.rb @@ -1,5 +1,7 @@ #MultiJson interface changed in 1.3.0, but need #to support older MultiJson for Rails 3.1. +mj_engine = nil + if MultiJson.respond_to? :default_adapter mj_engine = MultiJson.default_adapter else @@ -16,3 +18,12 @@ else end end +#This is so OkJson will work with symbol values +if mj_engine == :ok_json + class Symbol + def to_json + self.to_s.inspect + end + end +end + diff --git a/lib/brakeman/report/renderer.rb b/lib/brakeman/report/renderer.rb new file mode 100644 index 00000000..066f2590 --- /dev/null +++ b/lib/brakeman/report/renderer.rb @@ -0,0 +1,20 @@ +class Brakeman::Report + class Renderer + def initialize(template_file, hash = {}) + hash[:locals] ||= {} + hash[:locals].each do |key, value| + singleton_class.send(:define_method, key) { value } + end + + singleton_class.send(:define_method, 'template_file') { template_file } + + singleton_class.send(:define_method, 'template') { + File.read(File.expand_path("templates/#{template_file}.html.erb", File.dirname(__FILE__))) + } + end + + def render + ERB.new(template).result(binding) + end + end +end \ No newline at end of file diff --git a/lib/brakeman/templates/controller_overview.html.erb b/lib/brakeman/report/templates/controller_overview.html.erb similarity index 100% rename from lib/brakeman/templates/controller_overview.html.erb rename to lib/brakeman/report/templates/controller_overview.html.erb diff --git a/lib/brakeman/templates/controller_warnings.html.erb b/lib/brakeman/report/templates/controller_warnings.html.erb similarity index 100% rename from lib/brakeman/templates/controller_warnings.html.erb rename to lib/brakeman/report/templates/controller_warnings.html.erb diff --git a/lib/brakeman/templates/error_overview.html.erb b/lib/brakeman/report/templates/error_overview.html.erb similarity index 100% rename from lib/brakeman/templates/error_overview.html.erb rename to lib/brakeman/report/templates/error_overview.html.erb diff --git a/lib/brakeman/templates/header.html.erb b/lib/brakeman/report/templates/header.html.erb similarity index 100% rename from lib/brakeman/templates/header.html.erb rename to lib/brakeman/report/templates/header.html.erb diff --git a/lib/brakeman/templates/model_warnings.html.erb b/lib/brakeman/report/templates/model_warnings.html.erb similarity index 100% rename from lib/brakeman/templates/model_warnings.html.erb rename to lib/brakeman/report/templates/model_warnings.html.erb diff --git a/lib/brakeman/templates/overview.html.erb b/lib/brakeman/report/templates/overview.html.erb similarity index 100% rename from lib/brakeman/templates/overview.html.erb rename to lib/brakeman/report/templates/overview.html.erb diff --git a/lib/brakeman/templates/security_warnings.html.erb b/lib/brakeman/report/templates/security_warnings.html.erb similarity index 100% rename from lib/brakeman/templates/security_warnings.html.erb rename to lib/brakeman/report/templates/security_warnings.html.erb diff --git a/lib/brakeman/templates/template_overview.html.erb b/lib/brakeman/report/templates/template_overview.html.erb similarity index 100% rename from lib/brakeman/templates/template_overview.html.erb rename to lib/brakeman/report/templates/template_overview.html.erb diff --git a/lib/brakeman/templates/view_warnings.html.erb b/lib/brakeman/report/templates/view_warnings.html.erb similarity index 100% rename from lib/brakeman/templates/view_warnings.html.erb rename to lib/brakeman/report/templates/view_warnings.html.erb diff --git a/lib/brakeman/templates/warning_overview.html.erb b/lib/brakeman/report/templates/warning_overview.html.erb similarity index 100% rename from lib/brakeman/templates/warning_overview.html.erb rename to lib/brakeman/report/templates/warning_overview.html.erb -- GitLab