Author: esr
Date: Sun Apr  8 11:11:02 2007
New Revision: 16692

URL: http://svn.gna.org/viewcvs/wesnoth?rev=16692&view=rev
Log:
Sound crosschecks are reallly working now.

Modified:
    trunk/data/tools/macroscope

Modified: trunk/data/tools/macroscope
URL: 
http://svn.gna.org/viewcvs/wesnoth/trunk/data/tools/macroscope?rev=16692&r1=16691&r2=16692&view=diff
==============================================================================
--- trunk/data/tools/macroscope (original)
+++ trunk/data/tools/macroscope Sun Apr  8 11:11:02 2007
@@ -7,7 +7,8 @@
 
 import sys, os, time, re, getopt
 
-resource_extensions = ("png", "jpg", "ogg", "wav")
+#resource_extensions = ("png", "jpg", "ogg", "wav")
+resource_extensions = ("ogg", "wav")
 
 def allfiles(dirpath):
     "Get the names of all files under dirpath, ignoring .svn directories."
@@ -33,7 +34,7 @@
         if self.line:
             return self.filename + ":" + `self.line`
         else:
-            return self.filebame
+            return self.filename
 
 class CrossRef:
     macro_reference = re.compile(r"\{([A-Z_][A-Z0-9_:]*[A-Z0-9_])\b")
@@ -44,6 +45,12 @@
         self.fileref = {}
         for filename in filelist:
             if filter(lambda x: x, map(lambda x: filename.endswith("." + x), 
resource_extensions)):
+                name = os.path.basename(filename)
+                if name in self.fileref:
+                    print >>sys.stderr, "*** Warning: file stem %s from %s is 
duplicated at %s" \
+                                  % (name, self.fileref[name][0], filename)
+
+
                 self.fileref[os.path.basename(filename)] = 
(reference(filename), {}) 
             elif iswml(filename):
                 dfp = open(filename)
@@ -71,7 +78,7 @@
                         formals = []
                     if '#' in line:
                         line = line.split('#')[0]
-                    if not line or "{" not in line:
+                    if not line:
                         continue
                     # Find references to macros
                     for match in re.finditer(CrossRef.macro_reference, line):
@@ -87,7 +94,7 @@
                             self.unresolved.append((name, reference(fn,n+1)))
                     # Find references to resource files
                     for match in re.finditer(CrossRef.file_reference, line):
-                        name = match.group(0)
+                        name = os.path.basename(match.group(0))
                         if name in self.fileref:
                             namedict = self.fileref[name][1]
                             if fn not in namedict:
@@ -108,15 +115,23 @@
                 print "Macro %s defined at %s is used in %d files:" % (name, 
defloc, nrefs)
             for (file, linenumbers) in references.items():
                  print "    %s: %s" % (file, `linenumbers`[1:-1])
+        for (name, (defloc, references)) in self.fileref.items():
+            if pred and not pred(name, defloc, references):
+                continue
+            nrefs = len(references)
+            if nrefs == 0:
+                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 references.items():
+                 print "    %s: %s" % (file, `linenumbers`[1:-1])
     def unresdump(self):
         "Report unresolved references."
-        #if len(self.unresolved) == 0 and len(self.missing) == 0:
-        if len(self.unresolved) == 0:
+        if len(self.unresolved) == 0 and len(self.missing) == 0:
             print "# No unresolved references"
         else:
             print "# Unresolved references:"
-            #for (name, reference) in self.unresolved + self.missing:
-            for (name, reference) in self.unresolved:
+            for (name, reference) in self.unresolved + self.missing:
                 print "%s at %s" % (name, reference)
 
 if __name__ == "__main__":
@@ -153,10 +168,10 @@
         elif switch in ('-r', '--refcount'):
             refcount_restrict = 0
 
-    if len(arguments) != 1:
-        help()
-        sys.exit(1)
-    dirpath = arguments[0].split(";")
+    if len(arguments):
+        dirpath = arguments[0].split(":")
+    else:
+        dirpath = ['.']
     print "# Macroscope reporting on %s" % time.ctime()
     print "# Working directory: %s" % os.getcwd()
     print "# Directory path:    %s" % dirpath


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

Reply via email to