class RubyMemcheck::Configuration

def initialize(

def initialize(
  binary_name: nil,
  ruby: FileUtils::RUBY,
  valgrind: DEFAULT_VALGRIND,
  valgrind_options: DEFAULT_VALGRIND_OPTIONS,
  valgrind_suppressions_dir: DEFAULT_VALGRIND_SUPPRESSIONS_DIR,
  valgrind_generate_suppressions: false,
  skipped_ruby_functions: DEFAULT_SKIPPED_RUBY_FUNCTIONS,
  temp_dir: Dir.mktmpdir,
  output_io: $stderr,
  filter_all_errors: false,
  use_only_ruby_free_at_exit: RUBY_FREE_AT_EXIT_SUPPORTED
)
  @binary_name = binary_name
  @ruby = ruby
  @valgrind = valgrind
  @valgrind_options = valgrind_options
  @valgrind_suppression_files =
    get_valgrind_suppression_files(File.join(__dir__, "../../suppressions")) +
    get_valgrind_suppression_files(valgrind_suppressions_dir)
  @valgrind_generate_suppressions = valgrind_generate_suppressions
  @skipped_ruby_functions = skipped_ruby_functions
  @output_io = output_io
  @filter_all_errors = filter_all_errors
  temp_dir = File.expand_path(temp_dir)
  FileUtils.mkdir_p(temp_dir)
  @temp_dir = temp_dir
  @valgrind_options += [
    "--xml=yes",
    # %p will be replaced with the PID
    # This prevents forking and shelling out from generating a corrupted XML
    # See --log-file from https://valgrind.org/docs/manual/manual-core.html
    "--xml-file=#{File.join(temp_dir, "%p.xml")}",
  ]
  @loaded_features_file = Tempfile.create("", @temp_dir)
  @use_only_ruby_free_at_exit = use_only_ruby_free_at_exit
end