Patent ID: 9600273
Date: 2017-03-21
CPC Classifications: G06F

Claim:
1. A computer-implemented method for creating an incremental blame data structure for a file, the method comprising: receiving a source code commit that includes at least one file that has been updated with respect to a parent commit, and at least one annotation associated with a particular line in the at least one file, the annotation indicating an error related to the source code on the particular line; identifying parent file revisions for the at least one file; determining the differences between the at least one file and the identified parent file revisions; labeling lines of the at least one file as added lines and removed lines based on the determined differences; building a boolean query which checks whether a line is visible in the commit; creating a binary decision diagram and label for each commit; evaluating the binary decision diagrams from bottom to top following the edges to determine whether a line is visible in the commit; tracing a line origin, which includes a revision number and line number responsible for the current state of the line, of each line in the file based on the determined differences; responsive to determining that a line has been added or changed, marking the line as an origin and linking the line to itself in an incremental blame data structure for the file; responsive to determining that a line has not been updated, determining an origin of the unmodified line by tracing the parent file revisions associated with the unmodified line; and adding an identifier of the line, the line's origin, and any annotation associated with the line's origin to the incremental blame data structure of the file.