| from optparse import OptionParser, OptionGroup |
| parser = OptionParser("""\ |
| usage: %prog [options] <path> |
| Utility for dumping Clang-style logged diagnostics.\ |
| (opts, args) = parser.parse_args() |
| parser.error("invalid number of arguments") |
| # Read the diagnostics log. |
| # Complete the plist (the log itself is just the chunks). |
| <?xml version="1.0" encoding="UTF-8"?> |
| <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" \ |
| "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> |
| diags = plistlib.readPlistFromString(data) |
| # Print out the diagnostics. |
| print "**** BUILD DIAGNOSTICS ****" |
| for i, file_diags in enumerate(diags): |
| file = file_diags.get('main-file') |
| print "*** %s ***" % file |
| for d in file_diags.get('diagnostics', ()): |
| print "%s:%s:%s: %s: %s" % ( |
| d.get('filename'), d.get('line'), d.get('column'), |
| d.get('level'), d.get('message')) |
| if __name__ == "__main__": |