docs: function reporter(errors, testing) {
  
    var error_log = '',
      default_log = 'JSHint found no errors in your code.';
  
    /**
     *  Make sure JSHint errors were valid.
     */
  
    if (! valid_errors(errors)) {
  
      if (testing) {
        return default_log;
      }
  
      return console.log(default_log);
  
    }
  
    /**
     *  Organize errors into groups by filename.
     */
  
    var error_groups = group_errors(errors);
  
    /**
     *  Loop through error groups.
     */
  
    var error_amount = 0,
      invalid_files_amount = error_groups.length;
  
    for(var e = 0; e < error_groups.length; e++){
  
      /**
       *  Increment error count.
       */
  
      if (error_groups[e].errors) {
        error_amount += error_groups[e].errors.length;
      }
  
      /**
       *  Append formatted error to log message.
       */
  
      error_log += format_errors(error_groups[e]);
  
    }
  
    /**
     *  If no log generated, return default message.
     */
  
    if (! error_log) {
  
      if (testing) {
        return default_log;
      }
  
      return console.log(default_log);
  
    }
  
    /**
     *  Add comments to error message.
     */
  
    var files_suffix = invalid_files_amount === 1 ? '' : 's';
  
    error_log = 'JSHint found a total of ' + error_amount + ' errors in ' +
      invalid_files_amount + ' file' + files_suffix + '.\n\n' + error_log;
  
    /**
     *  Strip newlines from end.
     */
  
    error_log = error_log.substr(0, error_log.lastIndexOf('\n\n\n'));
  
    /**
     *  JSHint reporters return a console log message.
     */
  
    if (testing) {
      return error_log;
    }
  
    return console.log(error_log);
  
  }