blob: 1a8f742c3c2195928d211c1ade051fb316407c83 [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)
53
54if __name__ == '__main__':
55 main(sys.argv[1:])
56
57