1. A computer-implemented method comprising: receiving a child snapshot, the child snapshot representing a code base at a specific revision; identifying a parent snapshot that represents a previous revision of the code base; computing canonical representations for violations representing coding defects in the parent and child snapshots; determining matching violations between the parent and child snapshots, unmatched parent violations occurring only in the parent snapshot, and unmatched child violations occurring only in the child snapshot; for matching violations that have different canonical representations, storing a mapping between the parent snapshot violation and the child snapshot violation using their respective canonical representations; for each unmatched parent violation in the parent snapshot, storing the violation's canonical representation with an indication that the violation has been eliminated from the child snapshot; and for each unmatched child violation in the child snapshot, storing the violation's canonical representation with an indication that the violation has been introduced in the child snapshot.