System for detecting source code security flaws through analysis of code history
US-10084819-B1 · Sep 25, 2018 · US
US10467004B2 · US · B2
| Field | Value |
|---|---|
| Publication number | US-10467004-B2 |
| Application number | US-201715857229-A |
| Country | US |
| Kind code | B2 |
| Filing date | Dec 28, 2017 |
| Priority date | Dec 28, 2017 |
| Publication date | Nov 5, 2019 |
| Grant date | Nov 5, 2019 |
A practical reading order for non-experts. Skip the full description unless you need deep technical detail.
What the patent document calls the invention.
A short plain-language summary of the technical disclosure.
Who owns or filed the patent and who is credited as inventor.
Filing, priority, publication, and grant dates set the timeline.
The legal scope of protection — read this for what is actually claimed.
Technology tags used to group this patent with similar filings.
Prior art links and similar publications in this corpus.
Official abstract text for this publication.
Methods, systems, and apparatus, including computer programs encoded on computer storage media, for linearizing the commit history of a code base. One of the methods includes receiving a request to attribute source code contributions to a particular snapshot in a project having a revision graph with multiple branches. Source code contributions occurring in each non-merge commit on a single path through the revision graph are attributed to a responsible developer entity of the non-merge commit. Each merge commit is processed on the single path including identifying contributions introduced by the merge commit, identifying one or more respective responsible developer entities for the contributions occurring in the one or more feature branch snapshots from one or more feature branches, and attributing source code contributions occurring in the one or more feature branch snapshots from the one or more feature branches to the identified one or more respective responsible developer entities.
Opening claim text (preview).
What is claimed is: 1. A system comprising: one or more computers and one or more 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 attribute source code contributions to a particular commit in a project having a revision graph with multiple branches; receiving a designation of a single path through the revision graph defining a master branch, the single path including the particular commit and a plurality of other commits; attributing non-merge-commit contributions occurring in each non-merge commit on the single path of the master branch to a respective responsible developer entity of the non-merge commit; and processing each merge commit on the single path of the master branch to attribute merge-commit source code contributions occurring in respective merge commits on the single path of the master branch, including: identifying merge-commit contributions to the source code introduced into the master branch by the merge commit, wherein the merge commit merges a master branch commit with one or more feature branch commits from one or more feature branches, determining, for each merge-commit contribution, whether the merge-commit contribution is transitively matched by a source code contribution in a feature branch commit of the one or more feature branches, attributing, to a developer entity responsible for the merge commit, any merge-commit contributions that are not transitively matched by source code contributions in any of the one or more feature branches, identifying one or more respective responsible developer entities for the merge-commit contributions that are transitively matched by source code contributions in the one or more feature branch commits of the one or more feature branches, and attributing each merge-commit contribution that is transitively matched by a source code contribution in a particular feature branch commit to a respective developer entity responsible for the particular feature branch commit. 2. The system of claim 1 , wherein the source code contributions comprise violation introductions, violation removals, or both. 3. The system of claim 2 , wherein identifying one or more respective responsible developer entities for the merge-commit contributions that are transitively matched by source code contributions in the one or more feature branch commits of the one or more feature branches comprises computing transitive violation matching information for violations introduced or removed in the one or more feature branch commits. 4. The system of claim 1 , wherein attributing each merge-commit contribution that is transitively matched by the source code contribution in the particular feature branch commit to the respective developer entity responsible for the particular feature branch commit comprises designating the source code contribution made in the one or more feature branches to have been contributed as of the time of the merge commit. 5. The system of claim 1 , wherein receiving a designation of a single path through the revision graph defining a master branch comprises receiving user input specifying a plurality of commits including the particular commit. 6. The system of claim 1 , wherein receiving a designation of a single path through the revision graph defining a master branch comprises receiving a designation of a master branch according to a version control system. 7. The system of claim 1 , wherein attributing merge-commit code contributions occurring in respective merge commits on the single path of the master branch comprises ignoring all source code contributions on feature branches that are never merged with the master branch. 8. A system comprising: one or more computers and one or more 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 attribute merge-commit violations introduced by a merge commit, wherein the merge commit merges two or more feature branches of a revision graph; identifying merge-commit violations that are introduced by the merge commit, wherein the merge-commit violations that are introduced by the merge commit do not match violations in one or more parent commits of the merge commit; determining, for each merge-commit violation, whether the merge-commit violation is transitively matched by a source code violation in a feature branch commit of the two or more feature branches, wherein each source code violation in a feature branch commit is associated with a responsible developer entity that introduced the violation in one of the feature branches; attributing, to a developer entity responsible for the merge commit, any merge-commit violations that are not transitively matched by source code contributions in any of the two or more feature branches; and attributing, to a respective responsible developer entity, the merge-commit violations introduced by the merge commit that are transitively matched by a source code violation in a feature branch commit of the two or more feature branches. 9. The system of claim 8 , wherein identifying merge-commit violations that are introduced by the merge commit comprises: comparing the merge commit to all ancestor commits directly preceding the merge commit on a master branch into which the merge commit was committed; for violations that are in any of the ancestor revisions and not in the merge commit, identifying removed violations; and for violations that are in the merge commit and not in any of the ancestor revisions, identifying introduced violations. 10. The system of claim 8 , wherein the operations further comprise: identifying lines of code from the merge commit that do not exist in any ancestor commits directly preceding the merge commit on a master revision branch; identifying, from a plurality of historical commits preceding the merge commit and in the two or more feature branches, the historical commit in which the lines of code were introduced; and attributing the identified lines of code as a contribution by a particular developer entity responsible for the historical commit. 11. The system of claim 8 , wherein the operations further comprise: providing statistics for code characteristic changes between ancestor commits in feature branches that were not merged into a master branch into which the merge commit was committed and the merge commit. 12. The system of claim 8 , wherein the operations further comprise: providing statistics for code characteristic changes from the two or more feature branches that are merged back into a master branch into which the merge commit was committed. 13. The system of claim 8 , wherein the operations further comprise: providing statistics for code characteristic changes from a single path through the revision graph of a master branch into which the merge commit was committed. 14. A computer-implemented method comprising: receiving a request to attribute source code contributions to a particular commit in a project having a revision graph with multiple branches; receiving a designation of a single path through the revision graph defining a master branch, the single path including the particular commit and a plurality of other commits; attributing non-merge-commit contributions occurring in each non-merge commit on the single path of the master branch to a respective responsible developer entity of the non-merge commit; and processing each merge commit on the single path of the master
Related publications grouped by family.
Answers are generated from the same data shown on this page.