IP Library Granted Patent US 10,956,153
Granted Patent B2
US 10,956,153 · App. 16/587,735 · Granted Mar 23, 2021

Violation match sets

Inventor: Robin Neatherway (Oxford, GB)
Assignee: MICROSOFT TECHNOLOGY LICENSING, LLC
G06F8/77G06F8/71G06F8/75G06F11/3692
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 10,956,153
App. No.
16/587,735
Granted
Mar 23, 2021
Kind
B2
Abstract

Methods, systems, and apparatus, including computer programs encoded on computer storage media, for attributing violation introductions and removals. One of the methods includes receiving a request to compute a number of violation introductions attributable to a particular developer entity in a plurality of ancestor snapshots of an original snapshot in a revision graph of a code base. A respective match set for each of a plurality of violations occurring in the plurality of ancestor snapshots of the original snapshot are computed, wherein each match set for a particular violation in a particular snapshot includes any transitively matching violations in the ancestor snapshots of the particular snapshot that transitively match the particular violation. A count of unique match sets having at least one violation that was introduced by the particular developer entity is computed. The number of unique match sets is provided in response to the request.

Claims (31)

1. A system comprising:

one or more computers and one or more hardware storage devices storing instructions that are operable, when executed by the one or more computers, to cause the one or more computers to perform operations comprising:

receiving a request to compute a unique match set for one or more violations removed from a code base attributable to a particular developer entity within a plurality of snapshots in a revision graph of a code base, wherein the plurality of snapshots include a plurality of branches of the revision graph, and wherein the plurality of branches of the revision graph are developed in parallel and independently of each other;

identifying a plurality of removals of one or more violations from the code base by comparing parent and corresponding child snapshots in the revision graph of the code base to determine when each violation of the one or more violations is present in a parent snapshot but not present in a corresponding child snapshot of the parent snapshot of the revision graph of the code base, wherein an occurrence of a particular violation in the parent snapshot that is not present in the corresponding child snapshot reflects a removal of the particular violation;

executing a recursive process to find violation removals occurring in the plurality of snapshots to compute a respective match set for each removal of the identified plurality of removals of the one or more violations from the code base, wherein the respective match set includes a first removal of a particular violation from a first branch of the plurality of branches of the revision graph and a second removal of the particular violation from a second branch of the plurality of branches of the revision graph;

computing a count of unique match sets for each removal of the identified plurality of removals of the one or more violations from the code base that was removed by a particular developer entity, by at least determining the particular developer entity is responsible for both the first removal of the particular violation and the second removal of the particular violation and by attributing the first removal of the particular violation and the second removal of the particular violation as only a single violation removal by the particular developer entity; and

providing the count of unique match sets in response to the request to compute the unique match set for the one or more violations removed from the code base attributable to the particular developer entity.

2. The system of claim 1 , wherein the operations further comprise:

determining that, for a particular match set, that multiple developer entities were each responsible for at least one respective violation removal; and

in response to determining that, for the particular match set, that multiple developer entities were each responsible for the at least one respective violation removal, attributing a single violation removal to each developer entity of the multiple developer entities.

3. The system of claim 1 , wherein the parent and corresponding child snapshots in the revision graph of the code base are all ancestor snapshots to a target snapshot that is a most recent snapshot of the code base.

4. A method implemented by a computing system, the method comprising:

receiving a request to compute a unique match set for one or more violations removed from a code base attributable to a particular developer entity within a plurality of snapshots in a revision graph of a code base, wherein the plurality of snapshots include a plurality of branches of the revision graph, and wherein the plurality of branches of the revision graph are developed in parallel and independently of each other;

identifying a plurality of removals of one or more violations from the code base by comparing parent and corresponding child snapshots in the revision graph of the code base to determine when each violation of the one or more violations is present in a parent snapshot but not present in a corresponding child snapshot of the parent snapshot of the revision graph of the code base, wherein an occurrence of a particular violation in the parent snapshot that is not present in the corresponding child snapshot reflects a removal of the particular violation;

executing a recursive process to find violation removals occurring in the plurality of snapshots to compute a respective match set for each removal of the identified plurality of removals of the one or more violations from the code base, wherein the respective match set includes a first removal of a particular violation from a first branch of the plurality of branches of the revision graph and a second removal of the particular violation from a second branch of the plurality of branches of the revision graph;

computing a count of unique match sets for each removal of the identified plurality of removals of the one or more violations from the code base that was removed by a particular developer entity, by at least determining the particular developer entity is responsible for both the first removal of the particular violation and the second removal of the particular violation and by attributing the first removal of the particular violation and the second removal of the particular violation as only a single violation removal by the particular developer entity; and

providing the count of unique match sets in response to the request to compute the unique match set for the one or more violations removed from the code base attributable to the particular developer entity.

5. The method of claim 4 , wherein the operations further comprise:

determining that, for a particular match set, that multiple developer entities were each responsible for at least one respective violation removal; and

in response to determining that, for the particular match set, that multiple developer entities were each responsible for the at least one respective violation removal, attributing a single violation removal to each developer entity of the multiple developer entities.

6. The method of claim 4 , wherein the parent and corresponding child snapshots in the revision graph of the code base are all ancestor snapshots to a target snapshot that is a most recent snapshot of the code base.

7. One or more hardware storage devices storing instructions that are operable, when executed by one or more computers, to cause the one or more computers to perform operations comprising:

receiving a request to compute a unique match set for one or more violations removed from a code base attributable to a particular developer entity within a plurality of snapshots in a revision graph of a code base, wherein the plurality of snapshots include a plurality of branches of the revision graph, and wherein the plurality of branches of the revision graph are developed in parallel and independently of each other;

identifying a plurality of removals of one or more violations from the code base by comparing parent and corresponding child snapshots in the revision graph of the code base to determine when each violation of the one or more violations is present in a parent snapshot but not present in a corresponding child snapshot of the parent snapshot of the revision graph of the code base, wherein an occurrence of a particular violation in the parent snapshot that is not present in the corresponding child snapshot reflects a removal of the particular violation;

executing a recursive process to find violation removals occurring in the plurality of snapshots to compute a respective match set for each removal of the identified plurality of removals of the one or more violations from the code base, wherein the respective match set includes a first removal of a particular violation from a first branch of the plurality of branches of the revision graph and a second removal of the particular violation from a second branch of the plurality of branches of the revision graph;

computing a count of unique match sets for each removal of the identified plurality of removals of the one or more violations from the code base that was removed by a particular developer entity, by at least determining the particular developer entity is responsible for both the first removal of the particular violation and the second removal of the particular violation and by attributing the first removal of the particular violation and the second removal of the particular violation as only a single violation removal by the particular developer entity; and

providing the count of unique match sets in response to the request to compute the unique match set for the one or more violations removed from the code base attributable to the particular developer entity.

8. The one or more hardware storage devices of claim 7 , wherein the operations further comprise:

determining that, for a particular match set, that multiple developer entities were each responsible for at least one respective violation removal; and

in response to determining that, for the particular match set, that multiple developer entities were each responsible for the at least one respective violation removal, attributing a single violation removal to each developer entity of the multiple developer entities.

9. The one or more hardware storage devices of claim 7 , wherein the parent and corresponding child snapshots in the revision graph of the code base are all ancestor snapshots to a target snapshot that is a most recent snapshot of the code base.

Assignments (3)
CHANGE OF NAME Recorded May 20, 2020
From: SEMMLE LTD.
To: GITHUB SOFTWARE UK LTD.
Reel/Frame 052716/0170 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 20, 2020
From: GITHUB SOFTWARE UK LTD.
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 052716/0351 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 4, 2019
From: NEATHERWAY, ROBIN
To: SEMMLE LIMITED
Reel/Frame 050625/0186 →
Continuity (2)
Continuation 15792447 · Oct 24, 2017
Related Publication 20200133664A1 · Apr 30, 2020