Striving for a compromise between precision, recall, speed, or just for the sake of simplicity, existing DPD tools deliberately do not implement all known pattern detection techniques or do not implement them to their full extent. Therefore, they often render different, contradictory results on the same code.
Instead of striving for the ideal DPD tool it appears more promising to combine the decisions of existing tools implementing different DPD approaches. Each tool, analyzing certain aspects of a pattern, contributes its estimates of which program elements are likely to form a particular pattern instance.
We call this the data fusion approach to DPD. It builds on the synergy of proven techniques without requiring any expensive reimplementation of what is already available and has proven effective. In addition, it can benefit from future advances in the detection quality of any of the basic tools, no matter by which techniques they are achieved.
In order to verify our claim, we evaluated several pattern detection tools and developed the witness-based approach for combining their results.