code: function report(type, state, params)
  {
    var reporter = defaultReporter;
  
    // get rest of arguments
    params  = Array.prototype.slice.call(arguments, 1);
  
    // `init` and `done` types don't have command associated with them
    if (['init', 'done'].indexOf(type) == -1)
    {
      // second (1) position is for command
      // if command present get string representation of it
      params[1] = stringifyCommand(state, params[1]);
    }
  
    if (state && state.options && state.options.reporter)
    {
      reporter = state.options.reporter;
    }
  
    reporter[type].apply(null, params);
  }
docs: Generates report via default or custom reporter
  
  @private
  @param   {string} type - type of the report
  @param   {object} state - current state
  @param   {...mixed} [params] - extra parameters to report
  @returns {void}