Author: esr
Date: Fri Apr  6 07:14:02 2007
New Revision: 16619

URL: http://svn.gna.org/viewcvs/wesnoth?rev=16619&view=rev
Log:
macroscope check for unresolved macro references is *mostly* working...

Modified:
    trunk/data/tools/macroscope

Modified: trunk/data/tools/macroscope
URL: 
http://svn.gna.org/viewcvs/wesnoth/trunk/data/tools/macroscope?rev=16619&r1=16618&r2=16619&view=diff
==============================================================================
--- trunk/data/tools/macroscope (original)
+++ trunk/data/tools/macroscope Fri Apr  6 07:14:02 2007
@@ -49,7 +49,7 @@
                     name = tokens[1]
                     if name in self.xref:
                         print >>sys.stderr, "*** Warning: duplicate definition 
of %s from %s:%d at %s:%d\n" \
-                              % (self.xref[name][0], self.xref[name][1], name, 
filename, n+1)
+                              % (name, self.xref[name][0], self.xref[name][1], 
filename, n+1)
                     self.xref[name] = (filename, n+1, {})
             dfp.close()
         return self.xref
@@ -61,15 +61,18 @@
             for (n, line) in enumerate(rfp):
                 if line[0] == "#" or "{" not in line:
                     continue
-                for name in self.xref:
-                    if re.search("{" + name + r"\b", line):
+                for match in re.finditer(r"\{([A-Z][A-Z0-9_]+)\b", line):
+                    name = match.group(1)
+                    if name in self.xref:
                         namedict = self.xref[name][2]
                         if filename not in namedict:
                             namedict[filename] = []
                         namedict[filename].append(n+1)
+                    else:
+                        self.unresolved.append((name, filename, n+1))
             rfp.close()
     def xrefdump(self, threshold=9999):
-        "Report the crossreferences."
+        "Report resolved references."
         for (name, (filename, n, references)) in self.xref.items():
             nrefs = len(references)
             if nrefs > threshold:
@@ -78,8 +81,13 @@
             for (file, linenumbers) in references.items():
                  print "    %s: %s" % (file, `linenumbers`[1:-1])
     def unrefdump(self):
-        "Report dangling references"
-        pass
+        "Report dangling references."
+        if len(self.unresolved) == 0:
+            print "# No unresolved references"
+        else:
+            print "# Dangling references:"
+            for (name, filename, n) in self.unresolved:
+                print "%s at %s:%d" % (name, filename, n)
 
 if __name__ == "__main__":
     print "# Macroscope reporting on %s" % time.ctime() 


_______________________________________________
Wesnoth-commits mailing list
[email protected]
https://mail.gna.org/listinfo/wesnoth-commits

Reply via email to