Symbol Table for Hierarchical Data Flow Analysis

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Static code analysis tools face performance issues when analyzing large software projects with numerous structured data objects, as they struggle to efficiently handle data flow paths and identify security vulnerabilities without precluding all potential children in the symbol table, leading to poor performance.

Innovation Solution

The implementation of a dynamically growing symbol table and live data engine within the code analysis system, which selectively inserts leaf children impacting static code analysis, and uses intermediate representation to enhance the symbol data table, live data table, and live descendant data table for efficient data flow analysis.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If a complete symbol table containing all potential children is used, then analysis completeness is improved, but performance deteriorates due to large table size

Engineering Contradiction:
Improveanalysis completenessVSAvoidperformance
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent extracts only the necessary children from the complete symbol table that are actually relevant to security analysis. Instead of including all potential children, the system selectively includes only those children that can impact security-relevant statements, thereby reducing table size while maintaining analysis completeness for security vulnerabilities.

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

The patent applies partial action by including only the subset of children needed for security analysis rather than all children. The symbol table is dynamically grown to include children based on their relevance to security statements, performing exactly enough analysis to detect security vulnerabilities without unnecessary overhead.

Inventive Principle:
Principle #16Partial or excessive action

2Reliability

If all children are included in the symbol table, then data flow path coverage is improved, but memory usage increases

Engineering Contradiction:
Improvedata flow path coverageVSAvoidmemory usage
Core Design Contradiction:
ReliabilityVSQuantity of substance

Solution Approach 1:

The patent extracts and includes only those children in the symbol table that are relevant to security analysis. The system determines which children can actually impact security-relevant statements and includes only those in the data flow analysis, reducing memory consumption while maintaining adequate coverage for security vulnerability detection.

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

The patent implements a dynamic symbol table that grows as needed during analysis. Instead of pre-allocating space for all potential children, the table is dynamically expanded to include children based on their relevance to security statements encountered during the analysis process, optimizing memory usage adaptively.

Inventive Principle:
Principle #15Dynamics

3Productivity

If the symbol table is reduced in size, then performance is improved, but analysis precision may deteriorate

Engineering Contradiction:
ImproveperformanceVSAvoidanalysis precision
Core Design Contradiction:
ProductivityVSMeasurement precision

Solution Approach 1:

The patent applies local quality by making the symbol table content specific to security analysis needs rather than generic. The table includes children with properties and information tailored to security-relevant data flow analysis, ensuring high precision for security vulnerability detection while keeping the table compact for good performance.

Inventive Principle:
Principle #3Local quality

Data Source

PatentUS10360130B2Symbol tables for processing hierarchical data structures in data flow analysis
Publication Date: 2019.07.23 SAP SE
  • US10360130B2 patent drawing
  • US10360130B2 patent drawing
  • US10360130B2 patent drawing

AI summary

Disclosed are a system, a computer-readable storage medium storing at least one program, and a computer-implemented method of code analysis. Whether a destination ancestor of a destination data structure and the destination data structure are included in a live data table is determined. Also, whether a destination leaf-descendant of the destination data structure is included in a live descendant data table is determined. In response to either the destination ancestor or the destination data structure being included in the live data table, the live data table is updated to include the source data structure. In response to the destination leaf-descendant being included in the live descendant data table, the live data table and a symbol data table are updated to include a leaf-descendant of the source data structure that corresponds to the destination leaf-descendant. The symbol data table is provided to a data flow analyzer.