Predicate DispatchImpl::viableCallable
Gets a viable implementation of the target of the given Call
.
The following heuristic is applied for finding the appropriate callable:
In general, dispatch to both any existing model and any viable source dispatch.
However, if the model is generated and the static call target is in the source then
we trust the source more than the model and skip dispatch to the model.
Vice versa, if the model is manual and the source dispatch has a comparatively low
confidence then we only dispatch to the model. Additionally, manual models that
match a source dispatch exactly take precedence over the source.
Import path
import semmle.code.java.dataflow.internal.DataFlowDispatch