File tree Expand file tree Collapse file tree 1 file changed +6
-3
lines changed
java/ql/lib/semmle/code/java/dataflow/internal Expand file tree Collapse file tree 1 file changed +6
-3
lines changed Original file line number Diff line number Diff line change @@ -43,9 +43,12 @@ private module DispatchImpl {
43
43
/**
44
44
* Gets a viable implementation of the target of the given `Call`.
45
45
* The following heuristic is applied for finding the appropriate callable:
46
- * 1. If an exact manual model exists, only dispatch to the summarized callable.
47
- * 2. If a (non exact) manual model exists and/or if the source code is available, dispatch to both/either.
48
- * 3. Only dispatch to a summarized callable in case the static call target in not in source.
46
+ * In general, dispatch to both any existing model and any viable source dispatch.
47
+ * However, if the model is generated and the static call target is in the source then
48
+ * we trust the source more than the model and skip dispatch to the model.
49
+ * Vice versa, if the model is manual and the source dispatch has a comparatively low
50
+ * confidence then we only dispatch to the model. Additionally, manual models that
51
+ * match a source dispatch exactly take precedence over the source.
49
52
*/
50
53
DataFlowCallable viableCallable ( DataFlowCall c ) {
51
54
exists ( Call call | call = c .asCall ( ) |
You can’t perform that action at this time.
0 commit comments