IP Library Granted Patent US 9,176,731
Granted Patent B1
US 9,176,731 · App. 14/011,020 · Granted Nov 3, 2015

Heuristics for automated culprit finding

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,176,731
App. No.
14/011,020
Granted
Nov 3, 2015
Kind
B1
Abstract

A system and method for isolating one or more code changes which are suspected of causing a code failure are disclosed. An example system may include a backend, a frontend, and a datastore. A list of changes to a codebase may be received along with a list of test targets in the codebase that are failing and a snapshot of the codebase at the time when one or more of the codebase's tests started failing. A heuristic may be used to find the code changes causing the one or more code failures.

Claims (53)

1. A system for isolating one or more code changes that are suspected of causing a code failure in a codebase, the system comprising:

one or more processing devices; and

one or more storage devices having at least a memory storing instructions that, when executed by the one or more processing devices, cause the one or more processing devices to:

receive a list of changes to the codebase, the list including all changes to the codebase starting at the time when the codebase's tests were all passing to a time when one or more of the codebase's tests began to fail;

receive a list of test targets in the codebase that are failing;

receive a snapshot of the codebase at the time when one or more of the codebase's tests started failing;

use at least one compile or execution log to find the code changes causing one or more test failures; and

determine whether the test failure was caused by an execution failure by:

generating a root cause set from at least one log file;

for code changes in the received list of changes to the codebase:

for root causes in the root cause set:

retrieving a list of source files modified by the change;

for a modified source file:

 calculating the minimum distance to the source file from the root cause; and

 calculating the impact of modifying the source file;

summing the impact of modified source files to find a total impact of the change on the root cause;

summing the impact of the change on root causes to find a total impact of the change on the codebase;

sorting the code changes in order of impact; and

returning the sorted code change list.

2. The system of claim 1 , further comprising:

responsive to determining that the code failure was caused by a compile failure, using at least one compile log to generate the root cause set.

3. The system of claim 2 , wherein the impact of modifying the source file is determined by Gaussian (distance) where Gaussian( ) is a Gaussian function with a mean of 1 and variance of 0.1.

4. The system of claim 1 , further comprising:

responsive to determining that the code failure was caused by an execution failure, using at least one execution log to generate the root cause set.

5. The system of claim 4 , wherein generating a root cause set further comprises:

isolating source files that reported errors in the execution log; and

identifying targets that are parents of isolated source files.

6. The system of claim 4 , wherein the impact of modifying the source file is determined by the formula: k — 1*Gaussian (distance, M, V) where k — 1 is a constant multiplier and Gaussian( ) is a Gaussian function with a mean M and a variance V.

7. A computer-implemented method for isolating one or more code changes that are suspected of causing a code failure in a codebase, the method comprising:

receiving a list of changes to the codebase, the list including all changes to the codebase starting at the time when the codebase's tests were all passing to a time when one or more of the codebase's tests began to fail;

receiving a list of test targets in the codebase that are failing;

receiving a snapshot of the codebase at the time when one or more of the codebase's tests started failing;

use at least one compile or execution log to find the code changes causing one or more test failures; and

determine whether the test failure was caused by an execution failure by:

generating a root cause set from at least one log file;

for code changes in the received list of changes to the codebase:

for root causes in the root cause set:

retrieving a list of source files modified by the change;

for a modified source file:

 calculating the minimum distance to the source file from the root cause; and

 calculating the impact of modifying the source file;

summing the impact of the modified source files to find a total impact of the change on the root cause;

summing the impact of the change on root causes to find a total impact of the change on the codebase;

sorting the code changes in order of impact; and

returning the sorted code change list.

8. The computer-implemented method of claim 7 , further comprising:

responsive to determining that the code failure was caused by a compile failure, using at least one compile log to generate the root cause set.

9. The computer-implemented method of claim 7 , further comprising:

responsive to determining that the code failure was caused by an execution failure, using at least one execution log to generate the root cause set.

10. The computer-implemented method of claim 9 , wherein generating a root cause set further comprises:

isolating source files that reported errors in the execution log; and

identifying targets that are parents of isolated source files.

11. The computer-implemented method of claim 9 , wherein the impact of modifying the source file is determined by the formula: k — 1*Gaussian (distance, M, V) where k — 1 is a constant multiplier and Gaussian( ) is a Gaussian function with a mean M and a variance V.

Assignments (2)
CHANGE OF NAME Recorded Oct 2, 2017
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 044334/0466 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 28, 2013
From: ZIFTCI, CELAL; RAMAVAJJALA, VIVEK
To: GOOGLE INC.
Reel/Frame 031100/0929 →