Change report format so Emacs compilation mode can be used...

...to step through unresolved symbols.
This commit is contained in:
Eric S. Raymond 2007-04-10 05:25:19 +00:00
parent 82484e4b6d
commit 4ef45d7482
2 changed files with 24 additions and 19 deletions

View file

@ -1,18 +1,22 @@
# Recipes for various sanity checks.
#
# Hack this if our location in the Wesnoth source tree changes
TOPDIR = ../..
unresolved-macros:
@echo "Report on unresolved macro calls"
cd ../..; data/tools/macroscope --unresolved
unresolved:
@echo "# Report on unresolved macro calls"
@macroscope --unresolved $(TOPDIR)
all:
@echo "# Report on usage of all macros and resources"
@macroscope --crossreference $(TOPDIR)
utils-unused:
@echo "Report on unused utility macros"
cd ../..; data/tools/macroscope --crossreference --from data/utils --refcount 0
@echo "# Report on unused utility macros"
@macroscope --crossreference --from data/utils --refcount 0 $(TOPDIR)
utils-macros:
@echo "Report on usage of utility macros"
cd ../..; data/tools/macroscope --crossreference --from data/utils
@echo "# Report on usage of utility macros"
@macroscope --crossreference --from data/utils $(TOPDIR)
all-macros:
@echo "Report on usage of all macros"
cd ../..; data/tools/macroscope --crossreference

View file

@ -62,9 +62,12 @@ class reference:
if fn not in self.references:
self.references[fn] = []
self.references[fn].append(n+1)
def dump_references(self):
for (file, linenumbers) in self.references.items():
print " %s: %s" % (file, `linenumbers`[1:-1])
def __str__(self):
if self.line:
return self.filename + ":" + `self.line`
return '"%s", line %d' % (self.filename, self.line)
else:
return self.filename
@ -173,11 +176,10 @@ class CrossRef:
continue
nrefs = len(defloc.references)
if nrefs == 0:
print "Macro %s defined at %s is unused" % (name, defloc)
print "%s: macro %s is unused" % (defloc, name)
else:
print "Macro %s defined at %s is used in %d files:" % (name, defloc, nrefs)
for (file, linenumbers) in defloc.references.items():
print " %s: %s" % (file, `linenumbers`[1:-1])
print "%s: macro %s is used in %d files:" % (defloc, name, nrefs)
defloc.dump_references()
for (name, defloc) in self.fileref.items():
if pred and not pred(name, defloc):
continue
@ -186,8 +188,7 @@ class CrossRef:
print "Resource %s defined at %s is unused" % (name, defloc)
else:
print "Resource %s defined at %s is used in %d files:" % (name, defloc, nrefs)
for (file, linenumbers) in defloc.references.items():
print " %s: %s" % (file, `linenumbers`[1:-1])
defloc.dump_references()
def unresdump(self):
"Report unresolved references."
if len(self.unresolved) == 0 and len(self.missing) == 0:
@ -196,7 +197,7 @@ class CrossRef:
#print self.fileref.keys()
print "# Unresolved references:"
for (name, reference) in self.unresolved + self.missing:
print "%s at %s" % (name, reference)
print "%s -> %s" % (reference, name)
if __name__ == "__main__":
def help():
@ -237,8 +238,8 @@ Usage: macroscope [options] dirpath
else:
dirpath = ['.']
print "# Macroscope reporting on %s" % time.ctime()
print "# Invocation: %s" % " ".join(sys.argv)
print "# Working directory: %s" % os.getcwd()
print "# Directory path: %s" % dirpath
files = allfiles(dirpath)
if crossreference or unresolved:
xref = CrossRef(allfiles(dirpath))