llvm-project/clang/utils/analyzer/ubiviz

77 lines
2.0 KiB
Python
Executable File

#!/usr/bin/env python
#
# The LLVM Compiler Infrastructure
#
# This file is distributed under the University of Illinois Open Source
# License. See LICENSE.TXT for details.
#
##===--------------------------------------------------------------------===##
#
# This script reads visualization data emitted by the static analyzer for
# display in Ubigraph.
#
##===--------------------------------------------------------------------===##
import xmlrpclib
import sys
def Error(message):
print >> sys.stderr, 'ubiviz: ' + message
sys.exit(1)
def StreamData(filename):
file = open(filename)
for ln in file:
yield eval(ln)
file.close()
def Display(G, data):
action = data[0]
if action == 'vertex':
vertex = data[1]
G.new_vertex_w_id(vertex)
for attribute in data[2:]:
G.set_vertex_attribute(vertex, attribute[0], attribute[1])
elif action == 'edge':
src = data[1]
dst = data[2]
edge = G.new_edge(src, dst)
for attribute in data[3:]:
G.set_edge_attribute(edge, attribute[0], attribute[1])
elif action == "vertex_style":
style_id = data[1]
parent_id = data[2]
G.new_vertex_style_w_id(style_id, parent_id)
for attribute in data[3:]:
G.set_vertex_style_attribute(style_id, attribute[0], attribute[1])
elif action == "vertex_style_attribute":
style_id = data[1]
for attribute in data[2:]:
G.set_vertex_style_attribute(style_id, attribute[0], attribute[1])
elif action == "change_vertex_style":
vertex_id = data[1]
style_id = data[2]
G.change_vertex_style(vertex_id, style_id)
def main(args):
if len(args) == 0:
Error('no input files')
server = xmlrpclib.Server('http://127.0.0.1:20738/RPC2')
G = server.ubigraph
for arg in args:
G.clear()
for x in StreamData(arg):
Display(G, x)
sys.exit(0)
if __name__ == '__main__':
main(sys.argv[1:])