anchor.diff:      "modules from excluded applications\n"
       "`exclude_mods` - a list of modules to exclude from PLT files and "
       "success typing analysis\n"
  +    "`output_format` - configure whether the dialyzer_warnings file will have "
  +    "the `raw` or `formatted` output\n"
       "\n"
       "For example, to warn on unmatched returns: \n"
       "{dialyzer, [{warnings, [unmatched_returns]}]}.\n"
  
positive.code:     {0, State};
  succ_typings_(State, Plt, Output, Files) ->
      ?INFO("Analyzing ~b files with ~ts...", [length(Files), rebar_dir:format_source_file_name(Plt)]),
      Opts = [{analysis_type, succ_typings},
              {get_warnings, true},
              {from, byte_code},
              {files, Files},
              {init_plt, Plt}],
  
negative.code:             Warnings
      end.
  
  format_warnings(State, Output, Warnings) ->
      Opts = rebar_state:opts(State),
      Warnings1 = rebar_dialyzer_format:format_warnings(Opts, Warnings),
      console_warnings(Warnings1),
  
      OutputFormat = get_config(State, output_format, formatted),
      file_warnings(Output, Warnings, OutputFormat),
  
      length(Warnings).
  
  console_warnings(Warnings) ->
      _ = [?CONSOLE("~ts", [Warning]) || Warning <- Warnings],
      ok.
  
  file_warnings(_, [], _) ->
      ok;
  file_warnings(Output, Warnings, raw) ->
      Warnings1 = [[io_lib:format("~tp. \n", [W]) || W <- Warnings]],
      write_file_warnings(Output, Warnings1);
  file_warnings(Output, Warnings, formatted) ->
      Warnings1 = [[dialyzer:format_warning(Warning, fullpath), $\n]
                   || Warning <- Warnings],
      write_file_warnings(Output, Warnings1).
  
  write_file_warnings(Output, Warnings) ->
      case file:write_file(Output, Warnings, [append]) of
          ok ->
              ok;
          {error, Reason} ->
  