Patent ID: 8856764

Claim:
A computer program product for distributed static analysis of computer software applications, the computer program product comprising: a computer-readable storage medium not including signals per se; and computer-readable program code embodied in the computer-readable storage medium, wherein the computer-readable program code is configured to: statically analyze instructions of a computer software application, identify at least one entry point in the computer software application, assign, by a primary agent manager, a primary agent to statically analyze the computer software application from the entry point, assign, by a secondary agent manager, a secondary agent to statically analyze a call site encountered by the primary agent and produce a static analysis summary of the call site, wherein the call site comprises an external reference, and wherein the secondary agent is tasked with analyzing the external reference to produce the static analysis summary of the call site, wherein analysis of the external reference by the secondary agent is triggered by the static analysis performed by the primary agent when i) the primary agent encounters the call site requiring static analysis, ii) the primary agent issues a request to a summaries data store for the static analysis summary of the call site and the static analysis summary of the call site does not exist in the summaries data store, and iii) the primary agent places a request for the static analysis summary of the call site on a queue of requests for static analysis summaries, resume the primary agent's static analysis of the computer software application using the static analysis summary of the call site after the static analysis summary of the call site is produced, present results of any of the static analyses via a computer-controlled output device, and wherein the assigning the primary agent and the assigning the secondary agent produce static analysis that is scalable and precise for the computer software application.