# US 2021/0342143 A1 · Cognitive build recovery from inter-code commit issues

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2021/0342143 A1
- Document ID: US20210342143A1
- Status: Published application
- Kind: A1
- Application number: 15/929,451
- Filed: 2020-05-04
- Published: 2021-11-04
- Earliest claimed: 2020-05-04
- Assignees: International Business Machines Corporation
- Applicants: International Business Machines Corporation
- Inventors: NAMIT KABRA; VIJAY EKAMBARAM; TARUN TATER; SARANGA DHAR TRIPATHY
- Web page: https://patentgrep.com/patent/US20210342143A1

## CPC

- G06F 8/71: Version control (security arrangements therefor G06F21/57); Configuration management
- G06F 8/65: Updates (security arrangements therefor G06F21/57)
- G06F 11/36: Prevention of errors by analysis, debugging or testing of software
- G06F 11/3604: Analysis of software for verifying properties of programs (testing of software G06F11/3668)
- G06F 16/9024: {Graphs; Linked lists (G06F16/9027 takes precedence)}
- G06N 3/0442: characterised by memory or gating, e.g. long short-term memory [LSTM] or gated recurrent units [GRU]
- G06N 3/045: Combinations of networks
- G06N 3/0455: Auto-encoder networks; Encoder-decoder networks
- G06N 3/09: Supervised learning
- G06N 20/00: Machine learning
- G06F 8/41: Compilation
- G06F 11/0793: {Remedial or corrective actions (recovery from an exception in an instruction pipeline G06F9/3861; by retry G06F11/1402; for recovering from a failure of a protocol instance or entity H04L69/40)}
- G06N 3/044: Recurrent networks, e.g. Hopfield networks
- G06N 3/08: Learning methods
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G06N: COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS

## Abstract

Techniques for build recovery from inter-code commit failure. A build error for a software project is identified. A first software module, with one or more errors related to the build error, is selected. A comparison software module for the first software module is identified. The comparison software module includes at least one of: (i) a sibling software module to the first software module or (ii) an earlier version of the first software module. A potential problem with the first software module, related to the build error, is determined based on comparing the first software module with the comparison software module. A solution to the potential problem is generated based on the first software module. The solution includes a modification to the software code of the first software module. The solution is applied by modifying the software code of the first software module.

## Claims

### Claim 1

A method comprising:
identifying a build error for a software project comprising a plurality of software modules, and in response:
selecting a first software module, of the plurality of software modules, with one or more errors related to the build error;
identifying a comparison software module for the first software module, wherein the comparison software module comprises at least one of: (i) a sibling software module to the first software module or (ii) an earlier version of the first software module;
determining a potential problem with the first software module, related to the build error, based on comparing the first software module with the comparison software module;
generating a solution to the potential problem based on the first software module, the solution comprising a modification to the software code of the first software module; and
applying the solution by modifying the software code of the first software module.

### Claim 2 (depends on 1)

The method of claim 1, further comprising:
identifying one or more sibling software modules for the first software module, each of the one or more sibling software modules consuming an output of a same parent software module as the first software module, wherein the comparison software module comprises a sibling software module of the one or more sibling software modules.

### Claim 3 (depends on 2)

The method of claim 2, further comprising:
generating a dependency graph for the plurality of software modules, wherein the identifying the one or more sibling software modules for the first software module is based on the dependency graph.

### Claim 4 (depends on 2)

The method of claim 2, wherein the determining the potential problem with the first software module further comprises:
identifying a difference between the first software module and the sibling software module, the difference comprising at least one of: (i) a difference in processing the output of the parent software module between the first software module and the sibling software module or (ii) a difference in parameters between the first software module and the sibling software module.

### Claim 5 (depends on 4)

The method of claim 4, wherein the identifying the difference is done based on executing one or more snippets of the first software module and the sibling software module in a sample program.

### Claim 6 (depends on 1)

The method of claim 1, wherein the comparison software module comprises the earlier version of the first software module, the method further comprising:
identifying the earlier version of the first software module based on identifying a most recent successful build for the software project.

### Claim 7 (depends on 6)

The method of claim 6, wherein the determining the potential problem with the first software module further comprises:
identifying a difference between the first software module and the earlier version of the first software module using a similarity metric.

### Claim 8 (depends on 7)

The method of claim 7, wherein the similarity metric comprises an abstract syntax tree.

### Claim 9 (depends on 1)

The method of claim 1, further comprising:
identifying a plurality of potential problems with the plurality of software modules, related to the build error, wherein the plurality of potential problems comprises the determined potential problem with the first software problem; and
ranking the plurality of potential problems based on a likelihood that fixing the respective potential problem will cure the build error.

### Claim 10 (depends on 9)

The method of claim 9, wherein the ranking the plurality of potential problems is based on a score for each respective potential problem, the score for each respective module generated based, at least in part, on: (1) a first number of other modules called by the respective module, and (2) a second number of other modules that call the respective module.

### Claim 11 (depends on 1)

The method of claim 1, wherein generating the solution to the potential problem comprises at least one of: (i) replacing software code in the first software module with software code from the comparison software module or (ii) removing software code from the first software module.

### Claim 12 (depends on 1)

The method of claim 1, wherein the generating the solution to the potential problem comprises using a machine learning model to generate the solution based on the potential problem.

### Claim 13 (depends on 12)

The method of claim 12, wherein the machine learning model receives a context input and a program input and generates transformed software code, and wherein the machine learning model comprises:
an encoder module comprising a first embedding layer and a first one or more long short-term memory (LSTM) layers; and
a decoder module comprising a second embedding layer and a second one or more LSTM layers.

### Claim 14

A system, comprising:
a processor; and
a memory storing a program, which, when executed on the processor, performs an operation, the operation comprising:
identifying a build error for a software project comprising a plurality of software modules, and in response:
selecting a first software module, of the plurality of software modules, with one or more errors related to the build error;
identifying a comparison software module for the first software module, wherein the comparison software module comprises at least one of: (i) a sibling software module to the first software module or (ii) an earlier version of the first software module;
determining a potential problem with the first software module, related to the build error, based on comparing the first software module with the comparison software module;
generating a solution to the potential problem based on the first software module, the solution comprising a modification to the software code of the first software module; and
applying the solution by modifying the software code of the first software module.

### Claim 15 (depends on 14)

The system of claim 14, the operation further comprising:
identifying one or more sibling software modules for the first software module, each of the one or more sibling software modules consuming an output of a same parent software module as the first software module, wherein the comparison software module comprises a sibling software module of the one or more sibling software modules.

### Claim 16 (depends on 14)

The system of claim 14, wherein the comparison software module comprises the earlier version of the first software module, the operation further comprising:
identifying the earlier version of the first software module based on identifying a most recent successful build for the software project.

### Claim 17 (depends on 14)

The system of claim 14, wherein the generating the solution to the potential problem comprises using a machine learning model to generate the solution based on the potential problem.

### Claim 18

A non-transitory computer program product, the computer program product comprising:
a computer-readable storage medium having computer-readable program code embodied therewith, the computer-readable program code executable by one or more computer processors to perform an operation, the operation comprising:
identifying a build error for a software project comprising a plurality of software modules, and in response:
selecting a first software module, of the plurality of software modules, with one or more errors related to the build error;
identifying a comparison software module for the first software module, wherein the comparison software module comprises at least one of: (i) a sibling software module to the first software module or (ii) an earlier version of the first software module;
determining a potential problem with the first software module, related to the build error, based on comparing the first software module with the comparison software module;
generating a solution to the potential problem based on the first software module, the solution comprising a modification to the software code of the first software module; and
applying the solution by modifying the software code of the first software module.

### Claim 19 (depends on 18)

The computer program product of claim 18, the operation further comprising:
identifying one or more sibling software modules for the first software module, each of the one or more sibling software modules consuming an output of a same parent software module as the first software module, wherein the comparison software module comprises a sibling software module of the one or more sibling software modules.

### Claim 20 (depends on 18)

The computer program product of claim 18, wherein the generating the solution to the potential problem comprises using a machine learning model to generate the solution based on the potential problem.
