A computer-implemented method, comprising: generating, by performing, using a target predicate, a full analysis of code and for each of a plurality of components of the code, a plurality of summaries comprising: ( i) a forward summary comprising a forward flow, comprising a forward external parameter and a forward local parameter, the forward external parameter satisfying the target predicate, and ( ii) a backward summary comprising a backward flow, the backward flow comprising a backward local parameter and a backward external parameter, wherein: the full analysis is a taint analysis; the forward external parameter flows, during execution of the code, to the forward local parameter; the backward local parameter flows, during execution of the code, to the backward external parameter; and the backward external parameter flows to a function that accesses a security-sensitive resource of a computer system, obtaining a first modification to a modified component of the plurality of components; determining that one of the plurality of summaries for the modified component is invalid, wherein said determining comprises determining that the first modification modifies a statement that accesses a first parameter of the summary; and in response to determining that one of the plurality of summaries for the modified component is invalid: obtaining the forward flow from the forward summary of the modified component; obtaining the backward flow from the backward summary of the modified component; generating a local flow by performing an incremental analysis of the modified component using the forward flow of the modified component and the backward flow of the modified component; and detecting a defect in the code using the forward flow of the modified component, the local flow, and the backward flow of the modified component. generating, by performing, using a target predicate, a full analysis of code and for each of a plurality of components of the code, a plurality of summaries comprising: ( i) a forward summary comprising a forward flow, comprising a forward external parameter and a forward local parameter, the forward external parameter satisfying the target predicate, and ( ii) a backward summary comprising a backward flow, the backward flow comprising a backward local parameter and a backward external parameter, wherein: the full analysis is a taint analysis; the forward external parameter flows, during execution of the code, to the forward local parameter; the backward local parameter flows, during execution of the code, to the backward external parameter; and the backward external parameter flows to a function that accesses a security-sensitive resource of a computer system, the full analysis is a taint analysis; the forward external parameter flows, during execution of the code, to the forward local parameter; the backward local parameter flows, during execution of the code, to the backward external parameter; and the backward external parameter flows to a function that accesses a security-sensitive resource of a computer system, obtaining a first modification to a modified component of the plurality of components; determining that one of the plurality of summaries for the modified component is invalid, wherein said determining comprises determining that the first modification modifies a statement that accesses a first parameter of the summary; and in response to determining that one of the plurality of summaries for the modified component is invalid: obtaining the forward flow from the forward summary of the modified component; obtaining the backward flow from the backward summary of the modified component; generating a local flow by performing an incremental analysis of the modified component using the forward flow of the modified component and the backward flow of the modified component; and detecting a defect in the code using the forward flow of the modified component, the local flow, and the backward flow of the modified component. obtaining the forward flow from the forward summary of the modified component; obtaining the backward flow from the backward summary of the modified component; generating a local flow by performing an incremental analysis of the modified component using the forward flow of the modified component and the backward flow of the modified component; and detecting a defect in the code using the forward flow of the modified component, the local flow, and the backward flow of the modified component.