code: def report(self):  # pragma: nocover
          
          print()
          print("  %-25s %s" % ("Name", "File"))
          print("  %-25s %s" % ("----", "----"))
          # Print modules found
          keys = list(self.modules.keys())
          keys.sort()
          for key in keys:
              m = self.modules[key]
              if m.__path__:
                  print("P", end=' ')
              else:
                  print("m", end=' ')
              print("%-25s" % key, m.__file__ or "")
  
          # Print missing modules
          missing, maybe = self.any_missing_maybe()
          if missing:
              print()
              print("Missing modules:")
              for name in missing:
                  mods = list(self.badmodules[name].keys())
                  mods.sort()
                  print("?", name, "imported from", ', '.join(mods))
          # Print modules that may be missing, but then again, maybe not...
          if maybe:
              print()
              print("Submodules thay appear to be missing, but could also be", end=' ')
              print("global names in the parent package:")
              for name in maybe:
                  mods = list(self.badmodules[name].keys())
                  mods.sort()
                  print("?", name, "imported from", ', '.join(mods))
docs: Print a report to stdout, listing the found modules with their
          paths, as well as modules that are missing, or seem to be missing.