Frama-C API - Populate_spec
This module is used to generate missing specifications. Options Kernel.GeneratedDefaultSpec, Kernel.GeneratedSpecMode and Kernel.GeneratedSpecCustom can be used to choose precisely which clause to generate in which case.
Different types of clauses which can be generated via populate_funspec.
type t_exits = (Cil_types.termination_kind * Cil_types.identified_predicate) listRepresents exits clause in the sense of Cil_types.behavior.b_post_cond.
type t_assigns = Cil_types.assignsAssigns clause
type t_allocates = Cil_types.allocationAllocation clause
type t_requires = Cil_types.identified_predicate listRepresents requires clause in the sense of Cil_types.behavior.b_requires.
type t_terminates = Cil_types.identified_predicate optionRepresents terminates clause in the sense of Cil_types.spec.spec_terminates.
type 'a gen = Cil_types.kernel_function -> Cil_types.spec -> 'aType of a function that, given a Kernel_function.t and a Cil_types.spec, returns a clause. Accepted clause types include t_exits, t_assigns, t_requires, t_allocates and t_terminates.
type status = Property_status.emitted_statusAlias for brevity, status emitted for properties.
val register : ?gen_exits:t_exits gen -> ?status_exits:status -> ?gen_assigns:t_assigns gen -> ?status_assigns:status -> ?gen_requires:t_requires gen -> ?gen_allocates:t_allocates gen -> ?status_allocates:status -> ?gen_terminates:t_terminates gen -> ?status_terminates:status -> string -> unitregister ?gen_exits ?gen_requires ?status_allocates ... name registers a new mode called name which can then be used for specification generation (see Kernel.GeneratedSpecMode and Kernel.GeneratedSpecCustom). All parameters except name are optional, meaning default action (mode Frama_C) will be performed if left unspecified (triggers a warning).
val populate_funspec : ?loc:Cil_types.location -> ?do_body:bool -> Cil_types.kernel_function -> clause list -> unitpopulate_funspec ~loc ~do_body kf clauses generates missing specifications for kf according to selected clauses. loc is set to Kernel_function.get_location kf by default, and is used to specify warnings locations. By default do_body is false, meaning only specification of prototypes will be generated.
