IP Library Granted Patent US 11,662,997
Granted Patent B2
US 11,662,997 · App. 17/180,317 · Granted May 30, 2023

Systems and methods for software and developer management and evaluation

Inventor: James Farrier (Auckland, NZ)
Assignee: Appsurify, Inc.
G06F8/71G06F11/3688G06F17/18
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 11,662,997
App. No.
17/180,317
Filed
Feb 19, 2021
Granted
May 30, 2023
Kind
B2
Art Unit
2193
USPC
717/101
Abstract

A method of calculating a failure probability of a change in one or more source code repositories comprises analyzing at least one commit made to the source code repositories, determining a type of the commit selected from a fixing commit and a new code commit, if the commit is a new code commit, determining a set of areas of source code modified, if the code is a fixing commit, determining which commit of a plurality of new code commits is the causing commit, analyzing the commit message and calculating one or more parameters of the commit message, training a machine learning classifier with the set of data, and using the machine learning classifier to calculate a probability that the commit will cause a failure in the source code repository. Methods and systems for task assignment and test selection are also described.

Claims (41)

1. A method of calculating a failure probability of a change in one or more source code repositories, comprising:

selecting the one or more source code repositories;

analyzing the source files in the source code repositories;

analyzing at least one commit made to the source code repositories, the commit comprising one or more changes to the source code and a commit message;

determining a type of the commit selected from the group consisting of a fixing commit and a new code commit;

if the commit is a new code commit, determining a set of areas of source code modified;

if the code is a fixing commit, determining which commit of a plurality of new code commits is a causing commit, which caused a defect affiliated with the fixing commit, and determining a set of areas of source code modified by the causing commit;

analyzing the commit message and calculating one or more parameters of the commit message;

if the commit is a new code commit, training a machine learning classifier with a set of data comprising: the type of commit, the set of areas modified, and the commit message;

if the commit is a fixing commit, training the machine learning classifier with a set of data comprising: the type of commit, the causing commit, the set of areas of source code modified by the causing commit, and the commit message; and

using the machine learning classifier to calculate a probability that the commit will cause a failure in the source code repository.

2. The method of claim 1 , further comprising the step of stemming and lemmatizing the commit message.

3. The method of claim 1 , wherein the set of data further comprises the closing commit, a list of files modified, a set of similarly named files, folders, areas, and a list of files and areas associated with the test.

4. The method of claim 1 , further comprising calculating a set of probabilities that parts of a commit will cause a failure.

5. The method of claim 4 , further comprising displaying a heat map representing the set of probabilities.

6. The method of claim 4 , further comprising stratifying the set of probabilities into high risk, medium risk, low risk, and no change.

7. The method of claim 1 , further comprising transmitting a message to one or more recipients if the calculated probability exceeds a threshold.

8. The method of claim 1 , further comprising:

removing variable and method names from the changes to the source code in the commit to generate a genericized source code change; and

comparing the genericized source code change to other genericized source code changes.

9. A method of determining whether or not to run a test on a code repository, comprising

obtaining a set of caused-by commits and a set of closed-by commits, each comprising a set of regions of a code repository modified and an associated defect;

calculating a union of the set of regions modified by the caused-by and closed-by commits associated with each defect and associating the unions with each associated defect;

training a machine learning model with the unions as an input designated as high-risk code regions;

obtaining a set of tests, each test being associated with at least one region of the code repository;

receiving at least one new commit to the code repository;

determining which areas of code are changed by the commit;

analyzing a commit message associated with the commit;

determining a failure probability for the test using the machine learning model;

comparing the failure probability to a threshold; and

for each test in the set of tests, if the failure probability exceeds the threshold and the test is associated with the high-risk region of the code, running the test.

10. The method of claim 9 , further comprising determining whether a failure of the test will be unique.

11. The method of claim 9 , further comprising calculating a likelihood of whether the test will cause a unique failure.

12. The method of claim 9 , further comprising recording whether the new commit caused the test to change state, wherein the state is selected from the group consisting of passed, failed, and broken; and

using the state change information in a future iteration of the failure probability determining step.

13. The method of claim 12 , further comprising recording a failure message returned by the test if the test fails; and

using the failure message returned by the test in a future iteration of the failure probability determining step.

14. The method of claim 12 , further comprising:

if the new commit caused the test to change state from failed to passed, recording the commit as a “closed-by” commit.

15. The method of claim 9 , further comprising generating a list of tests to be run on the code repository.

16. The method of claim 15 , wherein the list of tests of be run is a list of a predetermined number of highest priority tests.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 3, 2022
From: FARRIER, JAMES
To: APPSURIFY, INC.
Reel/Frame 061640/0138 →
Continuity (2)
Provisional Application 62979013 · Feb 20, 2020
Related Publication 20210263728A1 · Aug 26, 2021
Cited By (4)
US 12,271,290 US 12,346,241 US 12,554,485 US 12,608,483