Automatic Software Build via Package Similarity Analysis

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current static analysis systems face scalability bottlenecks when performing instrumented builds for large-scale software projects, as they require manual configuration and labor to set up build environments and identify build commands, making it impractical to automatically analyze thousands or tens of thousands of projects.

Innovation Solution

A source code analysis system automatically configures build environments and identifies build commands by leveraging machine-readable public packaging archives, computing similarity between project snapshots and available packages to apply relevant build instructions, enabling unsupervised automatic builds.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Measurement precision

If manual configuration and labor are used to set up build environments and identify build commands, then build accuracy is improved, but scalability deteriorates

Engineering Contradiction:
Improvebuild accuracyVSAvoidscalability
Core Design Contradiction:
Measurement precisionVSProductivity

Solution Approach 1:

The system automatically discovers build commands and configures build environments by self-analyzing package repository metadata, build scripts, and project documentation without requiring manual human configuration. The build system instruments itself to trace and identify compilation processes, eliminating the need for external setup labor while maintaining accurate build execution.

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

The patent introduces an intermediary build instrumentation layer that sits between the build system and compilation processes. This intermediary automatically traces build commands, identifies source code files being compiled, and captures build metadata without requiring manual configuration. The instrumentation acts as a mediator that enables automatic discovery while maintaining build accuracy.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Measurement precision

If instrumented builds are performed for thousands of software projects, then analysis accuracy is improved, but manual configuration burden increases

Engineering Contradiction:
Improveanalysis accuracyVSAvoidconfiguration complexity
Core Design Contradiction:
Measurement precisionVSDevice complexity

Solution Approach 1:

The system copies and reuses build configuration information from package repository metadata, existing build scripts, and project documentation. Instead of manually configuring each build environment, the system extracts and adapts configuration templates from publicly available package information, automatically populating build commands, dependencies, and environment settings for thousands of projects.

Inventive Principle:
Principle #26Copying

Solution Approach 2:

The patent performs preliminary analysis of package repositories, build scripts, and project documentation before actual builds are executed. The system pre-discovers build commands, pre-identifies source code files, and pre-configures build environments by analyzing metadata in advance. This preliminary action eliminates the need for manual configuration during the actual build process.

Inventive Principle:
Principle #10Preliminary action

3Reliability

If build environments are manually set up for each project, then build reliability is improved, but automation capability deteriorates

Engineering Contradiction:
Improvebuild reliabilityVSAvoidautomation capability
Core Design Contradiction:
ReliabilityVSExtent of automation

Solution Approach 1:

The system implements feedback loops where build instrumentation captures actual build execution data, compares it against expected build configurations from package metadata, and automatically adjusts build settings to maintain reliability. The feedback mechanism monitors build success rates, traces compilation processes, and self-corrects configuration issues without manual intervention, maintaining reliable builds across automated large-scale operations.

Inventive Principle:
Principle #23Feedback

Data Source

PatentUS10255065B1Automatically building software projects
Publication Date: 2019.04.09 MICROSOFT TECHNOLOGY LICENSING LLC
  • US10255065B1 patent drawing
  • US10255065B1 patent drawing
  • US10255065B1 patent drawing

AI summary

Methods, systems, and apparatus, including computer programs encoded on computer storage media, for performing automatic builds of snapshots using software packages with highly similar contents. One of the methods includes computing, by a source code analysis system, a respective similarity score between contents of a particular snapshot and contents of each software package of a plurality of software packages in one or more package repositories. A highest-scoring software package for the snapshot is determined using the computed similarity scores. An automatic build of the snapshot using the highest-scoring software package is performed, including identifying one or more dependencies and one or more build commands from the highest-scoring software package, installing the one or more dependencies in a build environment of the snapshot, and executing the one or more build commands in the build environment of the snapshot.