Notes on the precision metric used in D. Liang, M. Pennings, MJ Harrold, "Evaluating the Impact of Context-sensitivity on Andersen's Algorithm for Java Programs", PASTE'05 Let 1. i be an actual object instance created during program execution 2. n be the abstract object name representing that instance in the static analysis algorithm (e.g., n might be the allocation site). 3. C[i] be the set of callsites at which i is observed (at execution time) as the receiver 4. C_A[n] be the set of callsites at which algorithm A reports that instances identified by n may be used as a receiver. Then precision of A wrt object instance i is: r_A[i] = |C[i]| / ( |C_A[n] intersect Cover| ) where Cover is the set of callsites that have been exercised by at least one test during execution. if r_A[i] == 1, then the algorithm A has perfectly identified the set of observed executed callsites with receiver i. if r_A[i] < 1, then algorithm A has idenfied many call sites at which it says i can be a receiver, but where test data failed to observe i as a receiver. To use this metric as a precision measure associated with algorithm A, the authors are assuming that the static information may be spurious if it disagrees with the dynamically observed information at callsites. however, this assumes that the test coverage exercises most of the possible paths in the program.