Add options to enable each individual level for the show-diagnostics tool.
authorChad Rosier <mcrosier@apple.com>
Mon, 24 Oct 2011 21:56:50 +0000 (21:56 +0000)
committerChad Rosier <mcrosier@apple.com>
Mon, 24 Oct 2011 21:56:50 +0000 (21:56 +0000)
rdar://9683410

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142856 91177308-0d34-0410-b5e6-96231b3b80d8

utils/show-diagnostics

index 3a69793abc90e12dff6c1fb370d41361fad8d8a9..b8ea8eae310f1be08d16a71b982a8043921d768e 100755 (executable)
@@ -5,15 +5,40 @@ import plistlib
 def main():
     from optparse import OptionParser, OptionGroup
     parser = OptionParser("""\
-usage: %prog [options] <path>
+Usage: %prog [options] <path>
 
 Utility for dumping Clang-style logged diagnostics.\
 """)
+    parser.add_option("-a", "--all", action="store_true", dest="all", 
+                      default=False, help="dump all messages.")
+    parser.add_option("-e", "--error", action="store_true", dest="error", 
+                      default=False, help="dump 'error' messages.")
+    parser.add_option("-f", "--fatal", action="store_true", dest="fatal", 
+                      default=False, help="dump 'fatal error' messages.")
+    parser.add_option("-i", "--ignored", action="store_true", dest="ignored", 
+                      default=False, help="dump 'ignored' messages.")
+    parser.add_option("-n", "--note", action="store_true", dest="note", 
+                      default=False, help="dump 'note' messages.")
+    parser.add_option("-w", "--warning", action="store_true", dest="warning", 
+                      default=False, help="dump 'warning' messages.")
     (opts, args) = parser.parse_args()
 
     if len(args) != 1:
         parser.error("invalid number of arguments")
 
+    levels = {'error': False, 'fatal error': False, 'ignored': False,
+              'note': False, 'warning': False}
+    if opts.error:
+        levels['error'] = True
+    if opts.fatal:
+        levels['fatal error'] = True
+    if opts.ignored:
+        levels['ignored'] = True
+    if opts.note:
+        levels['note'] = True
+    if opts.warning:
+        levels['warning'] = True
+
     path, = args
 
     # Read the diagnostics log.
@@ -44,9 +69,10 @@ Utility for dumping Clang-style logged diagnostics.\
         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 levels[d.get('level')] or opts.all:
+                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()