Sha256: 1cac251fc026b8db7660ddd08a5aced3337721df1bde065aa0e449947d450909

Contents?: true

Size: 1.04 KB

Versions: 20

Compression:

Stored size: 1.04 KB

Contents

module Brakeman
  ASTFile = Struct.new(:path, :ast)

  # This class handles reading and parsing files.
  class FileParser
    attr_reader :file_list

    def initialize tracker, app_tree
      @tracker = tracker
      @app_tree = app_tree
      @file_list = {}
    end

    def parse_files list, type
      read_files list, type do |path, contents|
        if ast = parse_ruby(contents, path)
          ASTFile.new(path, ast)
        end
      end
    end

    def read_files list, type
      @file_list[type] ||= []

      list.each do |path|
        result = yield path, read_path(path)
        if result
          @file_list[type] << result
        end
      end
    end

    def parse_ruby input, path
      begin
        RubyParser.new.parse input, path
      rescue Racc::ParseError => e
        @tracker.error e, "Could not parse #{path}"
        nil
      rescue => e
        @tracker.error e.exception(e.message + "\nWhile processing #{path}"), e.backtrace
        nil
      end
    end

    def read_path path
      @app_tree.read_path path
    end
  end
end

Version data entries

20 entries across 20 versions & 2 rubygems

Version Path
brakeman-3.0.5 lib/brakeman/file_parser.rb
brakeman-min-3.0.5 lib/brakeman/file_parser.rb
brakeman-3.0.4 lib/brakeman/file_parser.rb
brakeman-min-3.0.4 lib/brakeman/file_parser.rb
brakeman-min-3.0.3 lib/brakeman/file_parser.rb
brakeman-3.0.3 lib/brakeman/file_parser.rb
brakeman-min-3.0.2 lib/brakeman/file_parser.rb
brakeman-3.0.2 lib/brakeman/file_parser.rb
brakeman-min-3.0.1 lib/brakeman/file_parser.rb
brakeman-3.0.1 lib/brakeman/file_parser.rb
brakeman-3.0.0 lib/brakeman/file_parser.rb
brakeman-min-3.0.0 lib/brakeman/file_parser.rb
brakeman-2.6.3 lib/brakeman/file_parser.rb
brakeman-min-2.6.3 lib/brakeman/file_parser.rb
brakeman-min-2.6.2 lib/brakeman/file_parser.rb
brakeman-2.6.2 lib/brakeman/file_parser.rb
brakeman-2.6.1 lib/brakeman/file_parser.rb
brakeman-min-2.6.1 lib/brakeman/file_parser.rb
brakeman-min-2.6.0 lib/brakeman/file_parser.rb
brakeman-2.6.0 lib/brakeman/file_parser.rb