【发布时间】:2016-03-31 15:57:12
【问题描述】:
我正在编写一个 Frama-C 插件。在这个插件中,我想为函数添加注释(例如,如果函数名 = “test”,添加一个 requires 子句,说参数 == 1)。
我找到了函数Annotations.add_requires,但我不知道一些参数(Emitter.t,Identified_predicates)。字符串参数是函数名还是谓词自己的名称?
如何使用此功能? 谁能举个例子?
【问题讨论】:
-
你尝试了吗?您是否设法找到“测试”函数(
kernel_function)及其“参数”的变量(varinfo)?现在,在使用add_requires之前,您必须构建谓词parameter == 1,对吗?你知道怎么做吗? -
我得到了 kernel_function 和 varinfo。我将第三个参数(我认为是名称)设置为“test”。现在还有 2 个参数(第一个和最后一个)我不知道如何构建它们。 Emitter 有一个创建函数,但它有几个列表,我不知道它们在哪里(我现在尝试了
Emitter.create "name" [Code_annot] [] []。此外,我不知道如何构建谓词列表,因为它包含其他一些奇怪的东西(所以我也无法使用名称和发射器测试其他两次尝试)。 -
我现在尝试了这个:
let pred = Cil_types.Ptrue in let id_pred = {ip_name = [];ip_loc= location; ip_id= 1; ip_content= pred},但我不知道应该使用什么位置?