[VTK ARB] Dependency generations and visualisation

Andrew Maclean a.maclean at cas.edu.au
Fri Aug 20 05:03:29 EDT 2010


This is really good, I like the partitioning into kits.


On Thu, 2010-08-19 at 11:43 -0400, Jeff Baumes wrote:
> I attempted some custom scripts to see the include structure of VTK.
> 
> 
> python depends.py > vtkdepends.txt
> vtkpython dependsview.py vtkdepends.txt
> 
> 
> The first will create a two-column list of all includes from one class
> to another in VTK and must be called from the root of VTK source. The
> second visualizes the data with VTK itself and prints out the classes
> with the highest number of connections. Since the network makes a
> so-called "hairball", the second script optionally takes a maximum
> linkage cutoff to simplify the graph, e.g.
> 
> 
> vtkpython dependsview.py vtkdepends.txt 10
> 
> 
> will remove any classes with more than 10 links. Nodes are colored by
> number of connections.
> 
> 
> Jeff
> 
> On Wed, Aug 18, 2010 at 10:31 PM, Andrew Maclean
> <a.maclean at cas.edu.au> wrote:
>         Hey Bill, need some python practice?
>         
>         This could be useful in looking at the examples.
>         
>         I attach a python script taken from
>         http://furius.ca/pubcode/pub/conf/common/bin/depends-dot.html
>         And modified so that just the executable and the VTK nodes of
>         the graph
>         are traversed.
>         
>         Run it as:
>         python depends-dot ./Executable_File > depends.dot
>         Then:
>         neato -Tps -O depends.dot
>         Or:
>         dot -Tps -O depends.dot
>         
>         As you know you can also run:
>         cmake --graphviz=g.dot ..
>         Assuming the source is in ..
>         Then:
>         neato -Tps -O g.dot
>         Or:
>         dot -Tps -O g.dot
>         
>         However the python script (as modified) displays a lot more
>         information.
>         My modifications are:
>                    # Eliminate /usr or /lib libraries and keep the
>         first level
>         VTK links.
>                    #if fn.find('/usr') == -1 and fn.find('/lib') == -1
>         and
>         dfn.find('VTK') != -1:
>                    # Just the executable and the VTK nodes of the
>         graph are
>         traversed.
>                    if dfn.find('VTK') != -1:
>                       print '"%s" -> "%s";' % (fn, dfn)
>         
>         Just uncomment the first if statement to just get the
>         first-level
>         linkages to libraries.
>         
>         This might be a good start in visualising dependencies.
>         
>         I also found  perl script called cinclude2dot that  produces
>         an include
>         dependency graph see: http://www.flourish.org/cinclude2dot/ .
>         The
>         problem with this one is that it cannot follow links to
>         includes in
>         other directories. My perl is not good enough but it may be
>         possible to
>         parse CMakeCache.txt to pick up the include paths and traverse
>         those
>         directories too.
>         I ran this on the vtk directory and the output is ... well ...
>         spectacular and unreadable.
>         Try:
>         ./cinclude2dot --merge module > source.dot
>         
>         
>         The python script focuses on libraries and the perl one
>         focuses on
>         includes. So the approaches are different. However I feel the
>         perl one
>         could be more useful with the --merge module option since in
>         general vtk
>         include names reflect class names.
>         
>         Regards
>           Andrew
>         
>         
>         --
>         ___________________________________________
>         Andrew J. P. Maclean
>         Centre for Autonomous Systems
>         The Rose Street Building J04
>         The University of Sydney  2006  NSW
>         AUSTRALIA
>         Ph: +61 2 9351 3283
>         Fax: +61 2 9351 7474
>         URL: http://www.acfr.usyd.edu.au/
>         ___________________________________________
>         
>         _______________________________________________
>         Arb mailing list
>         Arb at vtk.org
>         http://public.kitware.com/cgi-bin/mailman/listinfo/arb
>         
> 
> 
> 
> -- 
> Jeff Baumes, Ph.D.
> Technical Lead, Kitware Inc.
> (518) 881-4932
> 

-- 
___________________________________________
Andrew J. P. Maclean
Centre for Autonomous Systems
The Rose Street Building J04
The University of Sydney  2006  NSW
AUSTRALIA
Ph: +61 2 9351 3283
Fax: +61 2 9351 7474
URL: http://www.acfr.usyd.edu.au/
___________________________________________




More information about the Arb mailing list