Static Program Analysis Summary Reuse
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Static whole-program analysis is resource-intensive and time-consuming, particularly in continuous integration and continuous delivery (CI/CD) environments, where rapid feedback is essential, and existing methods lack efficient mechanisms for reusing analysis results across similar software programs.
Innovation Solution
The system separates program analysis into capture and analysis phases, using a network-accessible artifact repository and summaries repository to capture and store artifacts, and reuse identifiers and summaries, allowing for incremental analysis and reducing computational requirements by leveraging cloud computing resources.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Measurement precision
If static whole-program analysis is performed to improve accuracy and provide better guidance on fixing defects and vulnerabilities, then analysis quality is improved, but processing time and computational resources increase
Solution Approach 1:
The system performs preliminary analysis on software programs and stores the analysis results (summaries) in a repository. When analyzing subsequent programs, especially in CI/CD environments, the system retrieves previously computed summaries for unchanged or similar code portions, avoiding redundant analysis work while maintaining accurate defect detection
Solution Approach 2:
The system creates and stores copies of analysis results (summaries) from previously analyzed programs. These summaries are then retrieved and reused when analyzing current programs, eliminating the need to re-analyze unchanged code portions while preserving the accuracy benefits of whole-program analysis
2Reliability
If static whole-program analysis is performed to improve analysis quality, then detection capability is improved, but computational resources and data volume increase
Solution Approach 1:
The system performs computational work in advance by analyzing software programs beforehand and storing their summaries. This preliminary action shifts computational resource consumption to off-peak times or separate systems, reducing the computational burden during actual CI/CD analysis while maintaining high detection capability through retrieved summaries
Solution Approach 2:
Instead of re-computing analysis results, the system copies previously computed summaries from the repository. This eliminates redundant computational work while preserving the reliable detection capability that whole-program analysis provides, significantly reducing energy and computational resource usage
3Productivity
If analysis results are reused across similar software programs to reduce processing time, then productivity is improved, but system complexity increases
Solution Approach 1:
The system segments the analysis process into distinct phases: capturing analysis results, storing them as summaries in a repository, and retrieving relevant summaries for reuse. This segmentation allows each component to be independently optimized and managed, reducing overall system complexity while enabling high-speed analysis through result reuse
Solution Approach 2:
The system introduces a summaries repository as an intermediary between the analysis engine and the programs being analyzed. This intermediary stores and manages analysis results, simplifying the complexity of direct analysis by allowing the system to retrieve pre-computed summaries rather than performing full analysis repeatedly
Data Source
AI summary
A system performs static program analysis with artifact reuse. The system identifies artifacts associated with the software program being analyzed. The system processes the identified artifacts for performing static program analysis and transmits either the artifacts or identifiers for the artifacts to a second processing device for performing program analysis. The second processing device receives the artifacts and uses the received identifiers to retrieve the artifacts from a networked storage system. The second device also retrieves stored summaries of previous program analysis from the networked storage system. The program analysis uses the retrieved artifacts to generate work units for static program analysis. The analysis is performed only for those work units that are determined to remain unchanged from previous static program analysis cycles.


