diff options
author | Daniel Dunbar <daniel@zuster.org> | 2011-04-11 22:37:39 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2011-04-11 22:37:39 +0000 |
commit | 58194307c1a45f6a20f5ed421c97309a9e007e46 (patch) | |
tree | 5e72872db1d1098c0ca861c19e9d7eb4090c5df0 /utils/show-diagnostics | |
parent | 3d820baf195973de23d6520d692acc6bfb43bfe9 (diff) | |
download | external_llvm-58194307c1a45f6a20f5ed421c97309a9e007e46.zip external_llvm-58194307c1a45f6a20f5ed421c97309a9e007e46.tar.gz external_llvm-58194307c1a45f6a20f5ed421c97309a9e007e46.tar.bz2 |
build: Add support for a SHOW_DIAGNOSTICS build variable.
If enabled, this will attempt to use the CC_LOG_DIAGNOSTICS feature I dropped
into Clang to print a log of all the diagnostics generated during an individual
build (from the top-level). Not sure if this will actually be useful, but for
now it is handy for testing the option.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129312 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'utils/show-diagnostics')
-rwxr-xr-x | utils/show-diagnostics | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/utils/show-diagnostics b/utils/show-diagnostics new file mode 100755 index 0000000..3a69793 --- /dev/null +++ b/utils/show-diagnostics @@ -0,0 +1,52 @@ +#!/usr/bin/env python + +import plistlib + +def main(): + from optparse import OptionParser, OptionGroup + parser = OptionParser("""\ +usage: %prog [options] <path> + +Utility for dumping Clang-style logged diagnostics.\ +""") + (opts, args) = parser.parse_args() + + if len(args) != 1: + parser.error("invalid number of arguments") + + path, = args + + # Read the diagnostics log. + f = open(path) + try: + data = f.read() + finally: + f.close() + + # Complete the plist (the log itself is just the chunks). + data = """\ +<?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"> +<plist version="1.0"> +<array> +%s +</array> +</plist>""" % data + + # Load the diagnostics. + diags = plistlib.readPlistFromString(data) + + # Print out the diagnostics. + print + 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__": + main() |