This tool is incomplete and unusable..
This prototype tool is the result of an investigation into visualising software dependencies.
Rough aims of the tool:
This prototype is implemented as a web application, and uses:
A minimal server process is supplied. We need to have some kind of custom server-side code in order to wrap the database; it's not easy for the browser to talk directly to a Neo4j instance due to the same-origin security policy. The server process is written in Python currently. This is just because it allowed me to complete the prototype quickly. The server could be reimplemented in another language fairly easily.
There are three front-ends to this project for historical reasons. The current active front-end is 'block-layout'.
Start neo4j. If you've downloaded a copy of the neo4j community edition from http://neo4j.com/download/, then change to the unpacked directory and run:
neo4j-community-2.3.2/bin/neo4j
server.py and the 'neo4j' import tool are hardcoded for password insecure
so you'll need to set neo4j's
password to that, or modify both the tools. You'll be asked to change it when you connect to neo4j on
http://localhost:7474.
The first time you run the demo, you'll need to import some data. The visualiser can import data from RTL dumped by GCC using the -fdump-rtl-expand flag. On simple C projects, just using "make CFLAGS=-fdump-rtl-expand" is enough to produce the call graph. This will produce several ".c.170r.expand" files around your build tree.
Then run these commands on the 'expand' files, where $SDV is the root of this repository's checkout.
$SDV/import/rtl-importer.py .expand $SDV/import/rtl-importer.py .expand $SDV/import/neo4j output.yaml
You need to run 'rtl-importer.py' twice at the moment because it requires a first pass to generate an index of all function names to objects. This will probably be optimised in a later version.
The "neo4j" tool is very inefficient at the moment and may take a long time to import all the yaml. We currently test by importing the call graph of Nethack 3.60, which takes about 33 minutes.
Start 'server.py' from the 'block-layout' directory. There is also a server.py in the top-level directory, which is meant for an older front-end; don't use this. You may need to specifically invoke it with Python 3, so use 'python3 server.py'.
Once this has started, you can point a browser at http://localhost:8080 to see the rendered results.