Have you ever created a modularized app, accidentally introduced a
dependency between one module and another, and then had to spend way
too much time looking through the link report generated by mxmlc to
find where the dependency got introduced?

I wrote an extremely short program to do this automatically. (If I
reinvented the wheel, please let me know, but I couldn't find anything
to do this) It builds a dependency graph using the mxmlc link-report
file and then lets you easily find the path between two nodes in the
graph using a simple depth-first search. It could easily be altered
for other purposes, e.g. to make a picture of the dependency graph for
more effective modularization.

I temporarily posted the source here, if you want to grab it:
http://8planes/MxmlcDep.tar.gz .

Example usage to find the dependency path between my class
ll.controller.textDialog.AddTextNoteController and
mx.managers.CursorManager:

DependencyGraph graph = new DependencyGraph();
                        graph.readLinkReport("/tmp/mainlinks.xml", new String[] 
{
"flex_src" });
                        List<ScriptNode> path = graph.findPathBetween(
                                
"ll.controller.textDialog:AddTextNoteController", 
                                "mx.managers:CursorManager");
                        for (ScriptNode sNode : path)
                                System.out.println(sNode.getName());

Output:

ll.controller.textDialog:AddTextNoteController
ll.controller:LanguageCheckingUtil
ll.rpc:AsyncCallbackAdapter
ll.view:ViewFactory
ll.view:IViewFactory
ll.view:SignupPopup
ll.controller:SignupController
ll.controller:MainCoordinator
mx.controls:DataGrid
mx.controls.listClasses:ListBaseContentHolder
mx.controls.listClasses:ListBase
mx.managers:DragManager
mx.managers.dragClasses:DragProxy
mx.managers:CursorManager


Hope you find it useful!

Reply via email to