Incremental Static Analysis Extension for IDEs

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Static analysis of large software projects is time-consuming and resource-intensive, particularly when only recently modified files need to be analyzed, as existing methods require rebuilding the entire project to provide updated results.

Innovation Solution

A static analysis extension for integrated development environments (IDEs) performs incremental local analysis by reusing incremental build information to extract and analyze only the source code files identified as needing recompilation, generating updated static analysis results without requiring a full rebuild, and presenting these results visually within the IDE.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If incremental build information is used to extract and analyze only modified source code files, then computational resources and time for static analysis are reduced, but the completeness of the analysis may be compromised

Engineering Contradiction:
Improvestatic analysis speedVSAvoidanalysis completeness
Core Design Contradiction:
ProductivityVSReliability

Solution Approach 1:

The patent divides the static analysis process into segments: full analysis is performed initially to establish a baseline, then subsequent analyses focus only on modified files and their dependent files. This segmentation allows the system to maintain reliability for changed portions while improving overall productivity through selective reanalysis.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent applies local quality by performing comprehensive analysis on modified files and their dependencies, while relying on previously analyzed results for unchanged files. This ensures that the specific areas requiring updates receive thorough analysis while avoiding redundant analysis of unchanged portions.

Inventive Principle:
Principle #3Local quality

2Reliability

If the entire project is rebuilt for static analysis, then comprehensive and accurate results are obtained, but time and computational resources are wasted on files that have not changed

Engineering Contradiction:
Improveanalysis accuracyVSAvoidanalysis time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The patent performs preliminary full analysis to establish baseline results and file dependency relationships before modifications occur. When changes are detected, the system uses this pre-established information to quickly identify only the necessary files for reanalysis, avoiding the need to reanalyze the entire project and thus reducing time loss while maintaining accuracy for changed portions.

Inventive Principle:
Principle #10Preliminary action

3Loss of information

If all source code files are extracted and analyzed, then complete static analysis results are generated, but the process becomes unnecessarily complex and resource-intensive for large projects

Engineering Contradiction:
Improveanalysis coverageVSAvoidsystem complexity
Core Design Contradiction:
Loss of informationVSDevice complexity

Solution Approach 1:

The patent implements a dynamic analysis scope that adapts based on project state: initially analyzing all files to build a complete picture, then dynamically adjusting to analyze only modified files and their dependencies in subsequent runs. This dynamic approach maintains comprehensive coverage of necessary changes while reducing system complexity for large projects.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The patent extracts and analyzes only the relevant portion of the codebase - specifically modified files and their dependent files - rather than processing the entire project. This extraction approach maintains analysis coverage for affected areas while significantly reducing system complexity and resource requirements.

Inventive Principle:
Principle #2Taking out (Extraction)

Data Source

PatentUS9262132B1Incremental local source code analysis
Publication Date: 2016.02.16 MICROSOFT TECHNOLOGY LICENSING LLC
  • US9262132B1 patent drawing
  • US9262132B1 patent drawing
  • US9262132B1 patent drawing

AI summary

Methods, systems, and apparatus, including computer programs encoded on computer storage media, for displaying updated static analysis results within an integrated development environment (IDE) using incremental build information. One of the methods includes receiving, by a static analysis plug-in of an integrated development environment (IDE) application installed on a user device, incremental build information. A plurality of extraction commands are generated from the incremental build information, and source code is extracted from the one or more source code files according to the plurality of generated extraction commands. Updated static analysis results are generated and presented to a user within the IDE.