[英]Frama-C: Add Annotation in Plugin
我正在編寫一個Frama-C插件。 在這個插件中,我想向函數添加注釋(例如,如果函數名稱=“ test”,則添加一個require子句,其中參數== 1)。
我找到了函數Annotations.add_requires,但是我不知道某些參數(Emitter.t,Identified_predicates)。 字符串參數是謂詞的函數名稱還是自己的名稱?
如何使用此功能? 誰能舉個例子?
發射器標識您的插件,並且必須聲明要修改的內容。 對於您的情況,要在規范中添加屬性,可以使用以下方法進行構建:
let emitter = Emitter.create "My plugin" [ Emitter.Funspec ]
~correctness:[] ~tuning:[]
現在,對於kernel_function
這是一個如何構建前提條件的示例,該前提條件說第一個參數等於一個:
let add_pre kf = match Kernel_function.get_formals kf with
| [] -> ()
| c_var::_ ->
let l_var = Cil.cvar_to_lvar c_var in
let var_term = Logic_const.tvar l_var in
let cnst_term = Logic_const.tinteger 1 in
let eq_pred = Logic_const.prel (Cil_types.Req, var_term, cnst_term) in
let pred = Logic_const.new_predicate eq_pred in
let bname = Cil.default_behavior_name in
Annotations.add_requires emitter kf ~behavior:bname [pred]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.