class Brakeman::Codeclimate::EngineConfiguration

Attributes

engine_config[R]

Public Class Methods

new(engine_config = {}) click to toggle source
# File lib/brakeman/codeclimate/engine_configuration.rb, line 7
def initialize(engine_config = {})
  @engine_config = engine_config
end

Public Instance Methods

options() click to toggle source
# File lib/brakeman/codeclimate/engine_configuration.rb, line 11
def options
  default_options.merge(configured_options)
end

Private Instance Methods

active_include_paths() click to toggle source
# File lib/brakeman/codeclimate/engine_configuration.rb, line 60
def active_include_paths
  @active_include_paths ||=
    if brakeman_configuration["app_path"]
      stripped_include_paths(brakeman_configuration["app_path"])
    else
      engine_config["include_paths"] && engine_config["include_paths"].compact
    end
end
brakeman_configuration() click to toggle source
# File lib/brakeman/codeclimate/engine_configuration.rb, line 52
def brakeman_configuration
  if engine_config["config"]
    engine_config["config"]
  else
    {}
  end
end
configured_options() click to toggle source
# File lib/brakeman/codeclimate/engine_configuration.rb, line 32
def configured_options
  @configured_options = {}
  # ATM this gets parsed as a string instead of bool: "config":{ "debug":"true" }
  if brakeman_configuration["debug"] && brakeman_configuration["debug"].to_s.downcase == "true"
    @configured_options[:debug] = true
    @configured_options[:report_progress] = false
  end

  if active_include_paths
    @configured_options[:only_files] = active_include_paths
  end

  if brakeman_configuration["app_path"]
    @configured_options[:path_prefix] = brakeman_configuration["app_path"]
    path = Pathname.new(Dir.pwd) + brakeman_configuration["app_path"]
    @configured_options[:app_path] = path.to_s
  end
  @configured_options
end
default_options() click to toggle source
# File lib/brakeman/codeclimate/engine_configuration.rb, line 19
def default_options
  @default_options = {
    :output_format => :codeclimate,
    :quiet => true,
    :pager => false,
    :app_path => Dir.pwd
  }
  if system("test -w /dev/stdout")
    @default_options[:output_files] = ["/dev/stdout"]
  end
  @default_options
end
path_subprefixes(path) click to toggle source
# File lib/brakeman/codeclimate/engine_configuration.rb, line 77
def path_subprefixes(path)
  Pathname.new(path).each_filename.inject([]) do |memo, piece|
   memo <<
     if memo.any?
       File.join(memo.last, piece)
     else
       File.join(piece)
     end
  end
end
stripped_include_path(prefix, subprefixes, path) click to toggle source
# File lib/brakeman/codeclimate/engine_configuration.rb, line 88
def stripped_include_path(prefix, subprefixes, path)
  if path.start_with?(prefix)
    path.sub(%r{^#{prefix}/?}, "/")
  elsif subprefixes.any? { |subprefix| path =~ %r{^#{subprefix}/?$} }
    "/"
  end
end
stripped_include_paths(prefix) click to toggle source
# File lib/brakeman/codeclimate/engine_configuration.rb, line 69
def stripped_include_paths(prefix)
  subprefixes = path_subprefixes(prefix)
  engine_config["include_paths"] && engine_config["include_paths"].map do |path|
    next unless path
    stripped_include_path(prefix, subprefixes, path)
  end.compact
end