Ocaml 如何将插件的结果复制到另一个项目?

Ocaml 如何将插件的结果复制到另一个项目?,ocaml,frama-c,Ocaml,Frama C,在Frama-C中,我想将类似插件的值的结果从一个项目复制到另一个项目。我该怎么做?我猜我必须使用Project.copy和正确的State\u选择,但这会有什么价值呢?更一般地说,如何确定给定插件的状态选择?不幸的是,插件之间没有统一的机制。对于EVA1插件,您可能会执行以下操作 let selection = State_selection.with_codependencies Db.Value.self in Project.copy ~selection ~src dest 为了捕捉

在Frama-C中,我想将类似插件的值的结果从一个项目复制到另一个项目。我该怎么做?我猜我必须使用Project.copy和正确的State\u选择,但这会有什么价值呢?更一般地说,如何确定给定插件的状态选择?

不幸的是,插件之间没有统一的机制。对于EVA1插件,您可能会执行以下操作

let selection = State_selection.with_codependencies Db.Value.self in
Project.copy ~selection ~src dest
为了捕捉EVA的状态以及它所依赖的中间状态

也就是说,我建议不要试图复制Frama-C内部状态的如此重要的一部分。它非常容易出错,并且意味着使用神秘的API。如果你负担得起,还有两种解决方案似乎更容易:

  • 在原始项目中工作,可能会通过
    文件创建一个新项目,并因此创建一个新AST。从访问者创建副本
  • 使用
    project复制整个项目。复制
    并处理新项目
1:EvolvedVValueAanalysis,价值的新名称