code: function listFilesToProcess(globPatterns, options) {
      var ignoredPaths,
          ignoredPathsList,
          files = [],
          added = {},
          globOptions,
          rulesKey = "_rules";
  
      /**
       * Executes the linter on a file defined by the `filename`. Skips
       * unsupported file extensions and any files that are already linted.
       * @param {string} filename The file to be processed
       * @returns {void}
       */
      function addFile(filename) {
          if (ignoredPaths.contains(filename)) {
              return;
          }
          filename = fs.realpathSync(filename);
          if (added[filename]) {
              return;
          }
          files.push(filename);
          added[filename] = true;
      }
  
      options = options || { ignore: true, dotfiles: true };
      ignoredPaths = new IgnoredPaths(options);
      ignoredPathsList = ignoredPaths.ig.custom[rulesKey].map(function(rule) {
          return rule.pattern;
      });
      globOptions = {
          nodir: true,
          ignore: ignoredPathsList
      };
  
      debug("Creating list of files to process.");
      globPatterns.forEach(function(pattern) {
          if (shell.test("-f", pattern)) {
              addFile(pattern);
          } else {
              glob.sync(pattern, globOptions).forEach(addFile);
          }
      });
  
      return files;
  }
docs: Build a list of absolute filesnames on which bemlint will act.
  Ignored files are excluded from the results, as are duplicates.
  
  @param   {string[]} globPatterns            Glob patterns.
  @param   {Object}   [options]               An options object.
  @param   {boolean}  [options.ignore]        False disables use of .bemlintignore.
  @param   {string}   [options.ignorePath]    The ignore file to use instead of .bemlintignore.
  @param   {string}   [options.ignorePattern] A pattern of files to ignore.
  @returns {string[]} Resolved absolute filenames.