Partial Call Graph Stitching for Dependency Upgrade Risk

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Developers face challenges in efficiently determining which version of a third-party component to upgrade to, as newer versions may introduce issues or vulnerabilities while addressing existing vulnerabilities, and existing call graph generation techniques are resource-intensive and impractical for build systems.

Innovation Solution

A system generates partial call graphs for dependencies, caches them, and stitches them together to create a complete call graph, determining upgrade candidates and their risk-benefit scores to prioritize upgrades, using Class-Hierarchy Analysis to reduce resource usage and improve efficiency.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If developers manually review each newer version of third-party components to determine appropriate upgrades, then upgrade accuracy and reliability are improved, but time consumption and labor effort increase significantly

Engineering Contradiction:
Improveupgrade accuracyVSAvoidtime consumption
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The system performs automated analysis of call graphs, vulnerability information, and package metadata to independently determine upgrade recommendations. The automated upgrade advisor generates prioritized lists of upgrade candidates by analyzing functional impact and vulnerability fixes, eliminating the need for manual developer review of each version while maintaining reliable upgrade decisions

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

The system continuously monitors vulnerability databases, package registries, and call graph execution patterns to provide feedback on upgrade recommendations. By analyzing actual usage patterns and comparing them against vulnerability information, the system dynamically adjusts upgrade priorities to ensure reliable recommendations that address real-world usage scenarios

Inventive Principle:
Principle #23Feedback

2Reliability

If existing call graph generation techniques are used to analyze all dependencies, then analysis completeness is improved, but resource consumption and computational cost increase significantly

Engineering Contradiction:
Improveanalysis completenessVSAvoidresource consumption
Core Design Contradiction:
ReliabilityVSUse of energy by moving object

Solution Approach 1:

The system segments the call graph analysis by focusing only on paths from entry points to vulnerable functions rather than generating complete call graphs for all dependencies. By dividing the analysis into targeted segments that only examine relevant execution paths, the system maintains analysis completeness for vulnerable code while dramatically reducing resource consumption for the entire dependency tree

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The system extracts only the essential information needed for vulnerability assessment from the call graphs, such as execution paths leading to vulnerable functions and functional dependencies. By taking out only the critical analysis results rather than processing entire call graphs, the system achieves necessary analysis completeness while minimizing computational resource consumption

Inventive Principle:
Principle #2Taking out (Extraction)

3Object-affected harmful factors

If developers upgrade to newer versions of components to fix vulnerabilities, then security is improved, but risk of introducing breaking changes and functional issues increases

Engineering Contradiction:
Improvevulnerability severityVSAvoidfunctional stability
Core Design Contradiction:
Object-affected harmful factorsVSReliability

Solution Approach 1:

The system performs preliminary analysis of upgrade candidates by pre-computing call graphs, identifying vulnerable functions, and analyzing functional dependencies before upgrades occur. By preparing this information in advance, the system can predict potential breaking changes and functional issues before they manifest, allowing developers to make informed decisions about which upgrades to apply and which to avoid

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The system changes the parameters for evaluating upgrades from simple version comparisons to multi-dimensional analysis including vulnerability severity, functional impact, breaking change detection, and usage frequency. By transforming the evaluation parameters to include these additional dimensions, the system can identify upgrades that fix vulnerabilities while minimizing functional disruption through comprehensive parameter-based assessment

Inventive Principle:
Principle #35Parameter changes

Data Source

PatentUS12430447B2Using call graphs to identify an update when upgrading to a newer version
Publication Date: 2025.09.30 ENDOR LABS INC
  • US12430447B2 patent drawing
  • US12430447B2 patent drawing
  • US12430447B2 patent drawing

AI summary

In some implementations, dependencies associated with a package selected from a software project are determined. Each dependency of the dependencies is used to create a set of partial call graphs that are stitched together to create a complete call graph of the package. A set of upgrade candidates for a dependency is determined. An upgrade candidate from the set of upgrade candidates is determined. Based on the complete call graph, issues associated with upgrading the package to use the upgrade candidate are determined. For each upgrade candidate in the set of the upgrade candidates, a risk-benefit score is determined based on issues associated with upgrading the package to use the upgrade candidate, a number of vulnerabilities, and a severity of the vulnerabilities addressed by upgrading the package to use the upgrade candidate. The upgrade candidates are prioritized based on the risk-benefit score to create prioritized upgrade candidates that are provided to a software developer.