ChecksImplements a method described in this paper from Raphaël Monat, Abdelraouf Ouadjaout and Antoine Miné : https://inria.hal.science/hal-04652657v2
This allows to track checks performed during the analysis, and to mark whether they are safe, unsafe or unknown (resp. Safe, Error, Warning).
module Kind : sig ... endmodule Category : sig ... endmodule Check : sig ... endmodule CheckMap : sig ... endmodule CategoryLocationMap : sig ... endval checks_list : (bool Stdlib.ref * unit CheckMap.t) CategoryLocationMap.tStore the list of checks raised by the analysis. The bool ref stores whether all checks in the map are safe. The unit CheckMap.t is the set of checks associated with the given Category.t * CilType.Location.t pair. The bool is a reference to avoid having to use the update function when updating the value. The CheckMap.t is mutable anyway so it is not a problem.
val add_check : Check.t -> unitval check :
Kind.t ->
Category.t ->
('a, unit, GoblintCil.Pretty.doc, unit) Stdlib.format4 ->
'aval error :
Category.t ->
('a, unit, GoblintCil.Pretty.doc, unit) Stdlib.format4 ->
'aval warn :
Category.t ->
('a, unit, GoblintCil.Pretty.doc, unit) Stdlib.format4 ->
'aval safe : Category.t -> unitval safe_msg :
Category.t ->
('a, unit, GoblintCil.Pretty.doc, unit) Stdlib.format4 ->
'a