A computer-implemented method, comprising: receiving (504; 604) a first version of a computer program; executing (506; 606) a first static analysis over the first version of the computer program; outputting a first warning in the first version of the computer program corresponding to a first location in the first version of the computer program, a warning relating to a potential source of error in the execution of the computer program; inferring a condition that causes the first warning to be suppressed when a second static analysis is executed over a second version of the computer program, the inferring comprising identifying execution traces through the first version of the computer program that terminate in a non-error state, and, based at least in part upon the identifying, inferring a correctness condition ensuring that traces terminate in a non-error state; receiving an indication that a developer desires that the first warning be suppressed in a subsequent version of the computer program; receiving (508; 614) the second version of the computer program, the second version of the computer program being non-identical to the first version of the computer program; inserting (510; 616) an assumption of the condition into the second version of the computer program, the assumption of the condition corresponding to the first warning that was output when the first static analysis was executed over the first version of the computer program; executing the second static analysis over the second version of the computer program; and outputting a second warning based upon the executing of the second static analysis over the second version of the computer program, the second warning caused by a revision to the first version of the computer program when generating the second version of the computer program, while suppressing the first warning based upon the assumption of the condition in the second version of the computer program based upon the executing of the second static analysis over the second version of the computer program. receiving (504; 604) a first version of a computer program; executing (506; 606) a first static analysis over the first version of the computer program; outputting a first warning in the first version of the computer program corresponding to a first location in the first version of the computer program, a warning relating to a potential source of error in the execution of the computer program; inferring a condition that causes the first warning to be suppressed when a second static analysis is executed over a second version of the computer program, the inferring comprising identifying execution traces through the first version of the computer program that terminate in a non-error state, and, based at least in part upon the identifying, inferring a correctness condition ensuring that traces terminate in a non-error state; receiving an indication that a developer desires that the first warning be suppressed in a subsequent version of the computer program; receiving (508; 614) the second version of the computer program, the second version of the computer program being non-identical to the first version of the computer program; inserting (510; 616) an assumption of the condition into the second version of the computer program, the assumption of the condition corresponding to the first warning that was output when the first static analysis was executed over the first version of the computer program; executing the second static analysis over the second version of the computer program; and outputting a second warning based upon the executing of the second static analysis over the second version of the computer program, the second warning caused by a revision to the first version of the computer program when generating the second version of the computer program, while suppressing the first warning based upon the assumption of the condition in the second version of the computer program based upon the executing of the second static analysis over the second version of the computer program.