Buildless Dependency Fetching for Missing Build Instructions

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

The complexity and limitations of build instructions in software development lead to challenges in determining build dependencies and supporting security analyses when instructions are incomplete, unavailable, or inconsistent, limiting the availability and efficiency of security and licensing analyses.

Innovation Solution

A buildless dependency fetching method that extracts dependency information from a program file, constructs a dependency set, and generates program representations without building the program, using a dependency extraction tool to facilitate security and licensing analyses.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If traditional build instructions are used to determine program dependencies, then build process reliability is improved, but analysis availability deteriorates when build instructions are incomplete or unavailable

Engineering Contradiction:
Improvebuild process reliabilityVSAvoidanalysis availability
Core Design Contradiction:
ReliabilityVSAdaptability or versatility

Solution Approach 1:

The patent segments the dependency resolution process into two independent paths: one using build instructions (when available) and another using source code analysis (when instructions are missing). This segmentation allows the system to maintain reliability through build instructions while gaining versatility by falling back to source code analysis, resolving the contradiction between reliability and adaptability.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces an intermediary dependency resolution mechanism that analyzes source code files directly when build instructions are unavailable. This intermediary approach bridges the gap between the ideal scenario (complete build instructions) and the realistic scenario (missing or incomplete instructions), enabling analysis availability across all scenarios while maintaining build process reliability when instructions are present.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Device complexity

If build instructions are required for dependency determination, then build process control is improved, but productivity deteriorates due to incomplete or unavailable instructions

Engineering Contradiction:
Improvebuild process controlVSAvoidanalysis efficiency
Core Design Contradiction:
Device complexityVSProductivity

Solution Approach 1:

The patent applies partial action by performing only the necessary dependency resolution steps appropriate to the available information. When build instructions are missing, the system performs source code analysis instead of attempting full build process control, avoiding wasted effort on unavailable instructions while maintaining productivity through alternative means.

Inventive Principle:
Principle #16Partial or excessive action

Solution Approach 2:

The system performs self-service dependency resolution by automatically analyzing source code files to extract dependency information when build instructions are unavailable. This self-service capability eliminates the need for external build instructions, allowing the system to maintain productivity through autonomous source code analysis rather than waiting for or requiring complete build process control.

Inventive Principle:
Principle #25Self-service

3Measurement precision

If build process is executed to obtain program representations, then analysis accuracy is improved, but loss of time increases due to complete building requirement

Engineering Contradiction:
Improveanalysis accuracyVSAvoidbuild time
Core Design Contradiction:
Measurement precisionVSLoss of time

Solution Approach 1:

The patent extracts the essential dependency information and program representations needed for analysis directly from source code files, separating this extraction process from the complete build process. This allows the system to obtain accurate analysis data without requiring the full build to complete, thereby reducing time loss while maintaining measurement precision.

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

The system performs preliminary dependency extraction and program representation generation from source code before the complete build process is executed. This preliminary action provides sufficient information for security and licensing analyses to proceed in parallel or independently, eliminating the sequential time loss that would occur if waiting for the complete build to finish.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS20250315219A1Buildless dependency fetching
Publication Date: 2025.10.09 MICROSOFT TECHNOLOGY LICENSING LLC
  • US20250315219A1 patent drawing
  • US20250315219A1 patent drawing
  • US20250315219A1 patent drawing

AI summary

Some embodiments construct a set of build dependencies for a program without a full set of build instructions. The build dependency set is constructed without piggy-backing on a build process that would produce an executable version of the program. Representations of the program's structure, such as expression types, call targets, symbol tables, abstract syntax trees, and other internal compiler data structures, are emitted to persistent non-volatile storage instead of being used only as intermediate steps for executable code generation. Security analysis can then utilize the program representations. Licensing analysis can also utilize the dependency set to identify program components and their storage locations.