Patent ID: 7406685

Claim:
A computer-implemented method for invoking a program analysis tool, comprising: identifying at least one dependency relationship by intercepting at least one call to one or more programs used to build a plurality of related programs; constructing a graph having a plurality of nodes and a plurality of edges, each edge connecting a pair of nodes, each node representing one of the plurality of related programs; creating an edge corresponding to each identifying dependency relationship; receiving a list of cross-program dependencies specifying dependency relationships between pairs of related programs wherein the cross-program dependencies are determined by intercepting the at least one call to the one or more programs used to build the related programs; determining an order in which to analyze the related programs of a software system as a function of the at least one identifying dependency relationship between the related programs, wherein determining an order comprises performing a topological sort of the graph using the plurality of edges as the relation for ordering and wherein the topological sort causes the plurality of nodes to be ordered so that any depended-on node precedes any nodes that depend on the depended-on nodes except for dependency cycles encountered in the graph, the dependency cycles comprising nodes which are mutually dependent upon on another; removing an arbitrarily-selected dependency to resolve any dependency cycles encountered in the graph; and causing the programs analysis tool to analyze the plurality of related programs in the determined order to facilitate defect detection in the plurality of related programs.