Staged Refinement for Static Analysis Scalability

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Static analysis of large codebases faces challenges in scalability and precision, often resulting in high false positives, making it difficult to identify true defects and generate effective repair reports.

Innovation Solution

A method involving flow-insensitive and flow-sensitive points-to analysis to generate initial and refined interest points, construct a flow graph, and identify traces, which helps in flagging security violations and distinguishing false positives by analyzing control and data flows.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If flow-insensitive points-to analysis is used to analyze large codebases, then scalability is improved, but precision deteriorates resulting in high false positives

Engineering Contradiction:
ImprovescalabilityVSAvoidprecision
Core Design Contradiction:
ProductivityVSMeasurement precision

Solution Approach 1:

The patent segments the analysis process into two distinct stages: flow-insensitive analysis for scalability and flow-sensitive analysis for precision. The flow-insensitive stage processes the entire codebase to identify potential defects efficiently, while the flow-sensitive stage focuses only on candidate regions to verify true defects and eliminate false positives. This segmentation allows the system to maintain both scalability and precision.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent applies partial action by performing the more precise flow-sensitive analysis only on candidate defect regions identified in the first stage, rather than applying it to the entire codebase. This selective application of the more resource-intensive analysis method maintains scalability while improving precision for critical areas.

Inventive Principle:
Principle #16Partial or excessive action

2Measurement precision

If manual investigation of potential defects is performed, then true reports can be identified, but the process becomes overwhelming when false positives exceed 5%

Engineering Contradiction:
Improvedefect identification accuracyVSAvoidinvestigation complexity
Core Design Contradiction:
Measurement precisionVSDevice complexity

Solution Approach 1:

The patent extracts and removes false positives from the set of potential defects through the flow-sensitive analysis stage. By specifically targeting and eliminating false positive cases, the system reduces the investigation burden on programmers while maintaining high accuracy in identifying true defects.

Inventive Principle:
Principle #2Taking out (Extraction)

3Reliability

If static analysis is used to identify defects in large codebases, then defect detection capability is improved, but the ability to produce sufficient repair information deteriorates

Engineering Contradiction:
Improvedefect detection capabilityVSAvoidrepair information completeness
Core Design Contradiction:
ReliabilityVSLoss of information

Solution Approach 1:

The patent adds the flow-sensitive analysis dimension to complement the flow-insensitive analysis. This additional analytical dimension provides more precise control and data flow information, enabling the generation of comprehensive repair reports that include sufficient information for programmers to effectively fix defects.

Inventive Principle:
Principle #17Another dimension (Dimensionality change)

Data Source

PatentUS10540255B2Staged refinement for static analysis
Publication Date: 2020.01.21 ORACLE INT CORP
  • US10540255B2 patent drawing
  • US10540255B2 patent drawing
  • US10540255B2 patent drawing

AI summary

A method for analyzing code may include generating, via a flow-insensitive points-to analysis, initial interest points each corresponding to a statement in the code, generating, via a flow-sensitive points-to analysis, flow tuples and refined interest points by removing a subset of the initial interest points, and constructing a flow graph using the refined interest points. The flow graph may include nodes each corresponding to a statement in the code, and edges corresponding to the flow tuples. The method may further include identifying a trace through the flow graph. The trace may include a node corresponding to an interest point of the refined interest points.