Static Analysis of Dynamic Code Using Value-Transition Graphs

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

The dynamic nature of dynamic programming languages poses challenges in performing static analysis of applications due to their flexibility and the ability to modify types and objects at runtime, making it difficult to analyze code before deployment.

Innovation Solution

A monitoring environment is used to deploy and copy the application code for static analysis, employing a code analyzer and resolver to identify unused code portions and iteratively resolve transition points, generating a value-transition graph.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Difficulty of detecting and measuring

If static analysis is performed on dynamic programming language code, then code analysis capability is improved, but analysis accuracy deteriorates due to runtime flexibility and dynamic type modification

Engineering Contradiction:
Improvecode analysis capabilityVSAvoidanalysis accuracy
Core Design Contradiction:
Difficulty of detecting and measuringVSMeasurement precision

Solution Approach 1:

The system performs preliminary actions by capturing code at specific transition points before runtime execution occurs. The static analyzer intercepts and analyzes code at these predetermined points, allowing analysis to be performed before the dynamic runtime flexibility can obscure the code's actual behavior. This enables accurate analysis of dynamic code by analyzing it in a controlled, predetermined manner rather than attempting to analyze it during its flexible runtime state.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The system introduces an intermediary mechanism - a static analyzer that acts as a mediator between the dynamic code and the analysis process. This intermediary captures code at transition points and resolves it into a standardized representation, serving as a bridge that translates the dynamic nature of the code into a form suitable for accurate static analysis, thereby resolving the contradiction between analysis capability and accuracy.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Reliability

If code is analyzed at runtime, then dynamic behavior can be captured, but processing time and resource consumption increase

Engineering Contradiction:
Improvedynamic behavior captureVSAvoidprocessing time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The system performs the analysis action preliminarily by capturing code at transition points before full runtime execution is needed. The static analyzer can analyze code snippets at these predetermined points without requiring complete runtime execution, thereby capturing essential dynamic behavior information while significantly reducing the processing time and resources that would be required for full runtime analysis.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The system extracts only the necessary code portions at transition points rather than analyzing the entire codebase at runtime. By taking out and analyzing only the critical code segments at these specific points, the system captures the essential dynamic behavior while minimizing processing time and resource consumption compared to comprehensive runtime analysis.

Inventive Principle:
Principle #2Taking out (Extraction)

3Loss of information

If all code portions are analyzed, then complete code review is achieved, but processing complexity and resource utilization increase

Engineering Contradiction:
Improvecode review completenessVSAvoidprocessing complexity
Core Design Contradiction:
Loss of informationVSDevice complexity

Solution Approach 1:

The system extracts and analyzes only the code portions that are actually executed or reachable at transition points, rather than attempting to analyze every line of code. This selective extraction maintains code review completeness for the active code paths while significantly reducing processing complexity and resource utilization compared to analyzing the entire codebase.

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

The system applies partial action by analyzing only the necessary code portions at transition points rather than performing complete analysis of all code. This partial analysis approach provides sufficient code review coverage for the executed paths while reducing processing complexity, avoiding the excessive resource consumption that would result from analyzing every code segment regardless of its execution relevance.

Inventive Principle:
Principle #16Partial or excessive action

Data Source

PatentUS20260037230A1Static analysis techniques for dynamic computer programming language
Publication Date: 2026.02.05 CROWDSTRIKE
  • US20260037230A1 patent drawing
  • US20260037230A1 patent drawing
  • US20260037230A1 patent drawing

AI summary

A method includes accessing code of an application written in a dynamic programming language, wherein the application includes a set of transition points, detecting values in the code of the application, wherein a first value of the values is associated with a first transition point of the set transition points, and iteratively resolving the first transition point to the first value of the plurality of values or another transition point. The method further includes generating a value transition graph comprising a set of nodes and a set of edges connecting the set of nodes, wherein each node of the set of nodes represents a resolved transition point of the set of transition points and generating a node in the value transition graph for the first transition point in response to resolving the first transition point to the first value.