Index: cfe/trunk/test/Analysis/exploded-graph-rewriter/node_labels.dot =================================================================== --- cfe/trunk/test/Analysis/exploded-graph-rewriter/node_labels.dot +++ cfe/trunk/test/Analysis/exploded-graph-rewriter/node_labels.dot @@ -1,6 +1,11 @@ -// RUN: %exploded_graph_rewriter %s | FileCheck %s -check-prefixes=CHECK,LIGHT -// RUN: %exploded_graph_rewriter %s --dark | FileCheck %s \ -// RUN: -check-prefixes CHECK,DARK +// RUN: %exploded_graph_rewriter %s \ +// RUN: | FileCheck %s -check-prefixes=CHECK,LIGHT,COLOR +// RUN: %exploded_graph_rewriter %s --dark \ +// RUN: | FileCheck %s -check-prefixes CHECK,DARK,COLOR +// RUN: %exploded_graph_rewriter %s --gray \ +// RUN: | FileCheck %s -check-prefixes=CHECK,LIGHT,GRAY +// RUN: %exploded_graph_rewriter %s --gray --dark \ +// RUN: | FileCheck %s -check-prefixes CHECK,DARK,GRAY // FIXME: Substitution doesn't seem to work on Windows. // UNSUPPORTED: system-windows @@ -23,10 +28,12 @@ // CHECK: Node0x2 [ // CHECK-SAME: -// CHECK-SAME: Bug Report Attached +// COLOR-SAME: Bug Report Attached +// GRAY-SAME: Bug Report Attached // CHECK-SAME: // CHECK-SAME: -// CHECK-SAME: Sink Node +// COLOR-SAME: Sink Node +// GRAY-SAME: Sink Node // CHECK-SAME: Node0x2 [shape=record,label= "{ Index: cfe/trunk/utils/analyzer/exploded-graph-rewriter.py =================================================================== --- cfe/trunk/utils/analyzer/exploded-graph-rewriter.py +++ cfe/trunk/utils/analyzer/exploded-graph-rewriter.py @@ -384,24 +384,28 @@ # A visitor that dumps the ExplodedGraph into a DOT file with fancy HTML-based # syntax highlighing. class DotDumpVisitor(object): - def __init__(self, do_diffs, dark_mode): + def __init__(self, do_diffs, dark_mode, gray_mode): super(DotDumpVisitor, self).__init__() self._do_diffs = do_diffs self._dark_mode = dark_mode + self._gray_mode = gray_mode @staticmethod def _dump_raw(s): print(s, end='') - @staticmethod - def _dump(s): - print(s.replace('&', '&') - .replace('{', '\\{') - .replace('}', '\\}') - .replace('\\<', '<') - .replace('\\>', '>') - .replace('\\l', '
') - .replace('|', '\\|'), end='') + def _dump(self, s): + s = s.replace('&', '&') \ + .replace('{', '\\{') \ + .replace('}', '\\}') \ + .replace('\\<', '<') \ + .replace('\\>', '>') \ + .replace('\\l', '
') \ + .replace('|', '\\|') + if self._gray_mode: + s = re.sub(r'', '', s) + s = re.sub(r'', '', s) + self._dump_raw(s) @staticmethod def _diff_plus_minus(is_added): @@ -835,6 +839,9 @@ parser.add_argument('--dark', action='store_const', dest='dark', const=True, default=False, help='dark mode') + parser.add_argument('--gray', action='store_const', dest='gray', + const=True, default=False, + help='black-and-white mode') args = parser.parse_args() logging.basicConfig(level=args.loglevel) @@ -845,7 +852,7 @@ graph.add_raw_line(raw_line) explorer = BasicExplorer() - visitor = DotDumpVisitor(args.diff, args.dark) + visitor = DotDumpVisitor(args.diff, args.dark, args.gray) explorer.explore(graph, visitor)