anchor.diff:      Class = io_lib:format(?CLASS, [name(File), basename(File), Percentage, Lines]),
       dump(Cover, [Class|Classes]).
   
  +-spec get_config() -> boolean().
  +%@doc get information about whether cover is enabled.
   get_config() ->
       case ephp_data:to_bool(ephp_config:get(<<"cover.enable">>)) of
           true -> true;
           _ -> false
       end.
   
  +-spec get_active_lines(cover_dict()) -> non_neg_integer().
  +%@doc number of lines used in the running.
   get_active_lines(Data) ->
       length(lists:filter(fun({_,0}) -> false; (_) -> true end, Data)).
   
  +-spec percentage(cover_dict()) -> float().
  +%@doc percentage between 0 and 1 about the coverage.
   percentage(Data) ->
       get_active_lines(Data) / length(Data).
   
  +-spec total_percentage(Files :: [{File :: binary(), cover_dict()}]) -> float().
  +%@doc percentage total for all of the files between 0 and 1 about the coverage.
   total_percentage(Files) ->
       {A, T} = lists:foldl(fun({_, Dict}, {A,T}) ->
           {A + get_active_lines(Dict), T + length(Dict)}
       end, {0, 0}, Files),
       A / T.
   
  +-spec dirname(Filename :: binary()) -> binary().
  +%@hidden
   dirname(Filename) ->
       filename:dirname(Filename).
   
  +-spec basename(Filename :: binary()) -> binary().
  +%@hidden
   basename(Filename) ->
       filename:basename(Filename).
   
  +-spec name(Filename :: binary()) -> binary().
  +%@hidden
   name(Filename) ->
       filename:rootname(filename:basename(Filename)).
  
positive.code: process([_|Data], N) ->
      process(Data, N).
  
  store(_Cover, _Type, _FileOrContext, undefined) ->
      ok;
  store(true = _Cover, Type, FileOrContext, Line) ->
  
negative.code:     file:write_file(Output, XML),
      ok.
  
  -spec dump(Files :: [binary()], Output :: iolist()) -> iolist().
  %@hidden
  dump([], Classes) ->
      lists:reverse(Classes);
  dump([{File, Dict} | Cover], Classes) ->
  