用途:为 OpenTaint 分析器无法追踪的方法(如不透明调用)编写代码形式的数据流近似,复现该方法真实的污点传播路径,使分析器能继续跟踪污点。
主要能力:读取数据流方法的真实源码,理解污点如何从输入(接收者、参数)流向输出(返回值、写入的参数、存储的状态);在 .opentaint/dataflow/<batch> 下按语言特定形式编写近似代码;引擎是字段敏感的,需按字段到字段精确路由,避免过度污染整个对象;用测试项目样本验证并迭代修复。
使用方式:输入包括 project-root(可选,默认当前目录)、language(必填)、batch(必填,对应 .opentaint/tracking/approximations/<batch>.yaml)、methods(可选子集)。工作流为:理解传播、编写近似、对测试项目运行近似测试(前台阻塞命令,等待退出)、约 3 次修复仍不收敛则上报。跟踪文件记录 passthrough、dataflow、skipped、engine_issues 分类及 build.done。
适用场景:为被丢弃的方法建立数据流近似,修复已交付的可调用方法,覆盖批次列出的所有重载。
限制:仅用测试项目上的近似测试验证;不得编辑或重编译测试样本;忠实模型仍无法通过时保留方法并上报;不修改分类桶或 build.done 中已有条目;编译期常量和字面量不携带污点。