簡體   English   中英

Frama-C:在插件中添加注釋

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM