1. A computer-implemented method comprising: receiving a violation representing a coding defect occurring in a snapshot of a code base; computing a first canonical representation for the received violation; obtaining a plurality of canonical representations of violations representing respective violation introductions and violation removals in the code base; using the first canonical representation to identify an initial canonical representation representing one of the violation introductions, the initial canonical representation being associated with an initial snapshot of the code base, wherein the initial canonical representation corresponds to an initial violation representing a first-observed occurrence of the coding defect in the initial snapshot of the code base, and wherein the initial canonical representation represents that the initial violation is first in a sequence of matching violations in a plurality of respective snapshots; using the first canonical representation to identify a last canonical representation representing one of the violation removals and associated with a last snapshot of the code base, wherein the last canonical representation corresponds to a last violation representing a last-observed occurrence of the coding defect that was first removed in the last snapshot of the code base, and wherein the last canonical representation represents that the last violation is last in the sequence of matching violations in the plurality of respective snapshots; and computing an elapsed time between the initial snapshot and the last snapshot.