code: def _run_prospector_on(filenames,
                         tools,
                         disabled_linters,
                         show_lint_files,
                         ignore_codes=None):
      
      from prospector.run import Prospector, ProspectorConfig
  
      assert tools
  
      tools = list(set(tools) - set(disabled_linters))
      return_dict = dict()
      ignore_codes = ignore_codes or list()
  
      # Early return if all tools were filtered out
      if not tools:
          return return_dict
  
      # pylint doesn't like absolute paths, so convert to relative.
      all_argv = (["-F", "-D", "-M", "--no-autodetect", "-s", "veryhigh"] +
                  ("-t " + " -t ".join(tools)).split(" "))
  
      for filename in filenames:
          _debug_linter_status("prospector", filename, show_lint_files)
  
      with _custom_argv(all_argv + [os.path.relpath(f) for f in filenames]):
          prospector = Prospector(ProspectorConfig())
          prospector.execute()
          messages = prospector.get_messages() or list()
          for message in messages:
              message.to_absolute_path(os.getcwd())
              loc = message.location
              code = message.code
  
              if code in ignore_codes:
                  continue
  
              key = _Key(loc.path, loc.line, code)
              return_dict[key] = message
  
      return return_dict
docs: Run prospector on filename, using the specified tools.
  
      This function enables us to run different tools on different
      classes of files, which is necessary in the case of tests.