blob: 687e8c007a56e71e23a0e2206422f84f3a6ebb60 [file] [log] [blame]
Ted Kremenekf8ce6992008-08-27 22:31:43 +00001#!/usr/bin/env python
2#
3# The LLVM Compiler Infrastructure
4#
5# This file is distributed under the University of Illinois Open Source
6# License. See LICENSE.TXT for details.
7#
8##===----------------------------------------------------------------------===##
9#
10# This script reads visualization data emitted by the static analyzer for
11# display in Ubigraph.
12#
13##===----------------------------------------------------------------------===##
14
15import xmlrpclib
16import sys
17
18def Error(message):
19 print >> sys.stderr, 'ubiviz: ' + message
20 sys.exit(1)
21
22def StreamData(filename):
23 file = open(filename)
24 for ln in file:
25 yield eval(ln)
26 file.close()
27
28def Display(G, data):
29 action = data[0]
30 if action == 'vertex':
31 vertex = data[1]
32 G.new_vertex_w_id(vertex)
33 for attribute in data[2:]:
34 G.set_vertex_attribute(vertex, attribute[0], attribute[1])
35 elif action == 'edge':
36 src = data[1]
37 dst = data[2]
38 edge = G.new_edge(src,dst)
39 for attribute in data[3:]:
40 G.set_edge_attribute(edge, attribute[0], attribute[1])
41
42def main(args):
43 if len(args) == 0:
44 Error('no input files')
45
46 server = xmlrpclib.Server('http://127.0.0.1:20738/RPC2')
47 G = server.ubigraph
48
49 for arg in args:
50 G.clear()
51 for x in StreamData(arg):
52 Display(G,x)
Ted Kremenek710ad932008-08-28 03:54:51 +000053
54 sys.exit(0)
55
Ted Kremenekf8ce6992008-08-27 22:31:43 +000056
57if __name__ == '__main__':
58 main(sys.argv[1:])
59
60