brakeman 0.5.1 → 0.5.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -288,6 +288,7 @@ if OPTIONS[:output_file]
288
288
  File.open OPTIONS[:output_file], "w" do |f|
289
289
  f.puts tracker.report.send(OPTIONS[:output_format])
290
290
  end
291
+ warn "Report saved in '#{OPTIONS[:output_file]}'"
291
292
  else
292
293
  puts tracker.report.send(OPTIONS[:output_format])
293
294
  end
@@ -2,6 +2,7 @@
2
2
  Dir.glob("#{File.expand_path(File.dirname(__FILE__))}/processors/*.rb").each { |f| require f.match(/processors.*/)[0] }
3
3
  require 'tracker'
4
4
  require 'set'
5
+ require 'pathname'
5
6
 
6
7
  #Makes calls to the appropriate processor.
7
8
  #
@@ -626,6 +626,8 @@ class Report
626
626
  output << "</table></div>"
627
627
  end
628
628
 
629
+ #Generated tab-separated output suitable for the Jenkins Brakeman Plugin:
630
+ #https://github.com/presidentbeef/brakeman-jenkins-plugin
629
631
  def to_tabs
630
632
  [[:warnings, "General"], [:controller_warnings, "Controller"],
631
633
  [:model_warnings, "Model"], [:template_warnings, "Template"]].map do |meth, category|
@@ -638,4 +640,28 @@ class Report
638
640
 
639
641
  end.join "\n"
640
642
  end
643
+
644
+ def to_test
645
+ report = { :errors => tracker.errors,
646
+ :controllers => tracker.controllers,
647
+ :models => tracker.models,
648
+ :templates => tracker.templates
649
+ }
650
+
651
+ [:warnings, :controller_warnings, :model_warnings, :template_warnings].each do |meth|
652
+ report[meth] = @checks.send(meth)
653
+ report[meth].each do |w|
654
+ w.message = w.format_message
655
+ if w.code
656
+ w.code = w.format_code
657
+ else
658
+ w.code = ""
659
+ end
660
+ w.context = context_for(w).join("\n")
661
+ w.file = file_for w
662
+ end
663
+ end
664
+
665
+ report
666
+ end
641
667
  end
@@ -23,6 +23,7 @@ end
23
23
 
24
24
  #Scans the Rails application.
25
25
  class Scanner
26
+ RUBY_1_9 = !!(RUBY_VERSION =~ /^1\.9/)
26
27
 
27
28
  #Pass in path to the root of the Rails application
28
29
  def initialize path
@@ -145,25 +146,28 @@ class Scanner
145
146
  type = f.match(/.*\.(erb|haml|rhtml)$/)[1].to_sym
146
147
  type = :erb if type == :rhtml
147
148
  name = template_path_to_name f
149
+ text = File.read f
148
150
 
149
151
  begin
150
152
  if type == :erb
151
153
  if tracker.config[:escape_html]
152
154
  type = :erubis
153
155
  if OPTIONS[:rails3]
154
- src = RailsXSSErubis.new(File.read(f)).src
156
+ src = RailsXSSErubis.new(text).src
155
157
  else
156
- src = ErubisEscape.new(File.read(f)).src
158
+ src = ErubisEscape.new(text).src
157
159
  end
158
160
  elsif tracker.config[:erubis]
159
161
  type = :erubis
160
- src = ScannerErubis.new(File.read(f)).src
162
+ src = ScannerErubis.new(text).src
161
163
  else
162
- src = ERB.new(File.read(f), nil, "-").src
164
+ src = ERB.new(text, nil, "-").src
165
+ src.sub!(/^#.*\n/, '') if RUBY_1_9
163
166
  end
167
+
164
168
  parsed = RubyParser.new.parse src
165
169
  elsif type == :haml
166
- src = Haml::Engine.new(File.read(f),
170
+ src = Haml::Engine.new(text,
167
171
  :escape_html => !!tracker.config[:escape_html]).precompiled
168
172
  parsed = RubyParser.new.parse src
169
173
  else
@@ -1 +1 @@
1
- Version = "0.5.1"
1
+ Version = "0.5.2"
@@ -1,7 +1,9 @@
1
1
  #The Warning class stores information about warnings
2
2
  class Warning
3
- attr_reader :called_from, :check, :class, :code, :confidence, :controller, :file, :line,
4
- :message, :method, :model, :template, :warning_set, :warning_type
3
+ attr_reader :called_from, :check, :class, :confidence, :controller,
4
+ :line, :method, :model, :template, :warning_set, :warning_type
5
+
6
+ attr_accessor :code, :context, :file, :message
5
7
 
6
8
  #+options[:result]+ can be a result Sexp from FindCall. Otherwise, it can be +nil+.
7
9
  def initialize options = {}
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 5
8
- - 1
9
- version: 0.5.1
8
+ - 2
9
+ version: 0.5.2
10
10
  platform: ruby
11
11
  authors:
12
12
  - Justin Collins
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2011-06-17 00:00:00 -07:00
17
+ date: 2011-06-29 00:00:00 -07:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency