package frama-c
Install
Dune Dependency
Authors
-
MMichele Alberti
-
TThibaud Antignac
-
GGergö Barany
-
PPatrick Baudin
-
NNicolas Bellec
-
TThibaut Benjamin
-
AAllan Blanchard
-
LLionel Blatter
-
FFrançois Bobot
-
RRichard Bonichon
-
VVincent Botbol
-
QQuentin Bouillaguet
-
DDavid Bühler
-
ZZakaria Chihani
-
LLoïc Correnson
-
JJulien Crétin
-
PPascal Cuoq
-
ZZaynah Dargaye
-
BBasile Desloges
-
JJean-Christophe Filliâtre
-
PPhilippe Herrmann
-
MMaxime Jacquemin
-
FFlorent Kirchner
-
AAlexander Kogtenkov
-
RRemi Lazarini
-
TTristan Le Gall
-
JJean-Christophe Léchenet
-
MMatthieu Lemerre
-
DDara Ly
-
DDavid Maison
-
CClaude Marché
-
AAndré Maroneze
-
TThibault Martin
-
FFonenantsoa Maurica
-
MMelody Méaulle
-
BBenjamin Monate
-
YYannick Moy
-
PPierre Nigron
-
AAnne Pacalet
-
VValentin Perrelle
-
GGuillaume Petiot
-
DDario Pinto
-
VVirgile Prevosto
-
AArmand Puccetti
-
FFélix Ridoux
-
VVirgile Robles
-
JJan Rochel
-
MMuriel Roger
-
JJulien Signoles
-
NNicolas Stouls
-
KKostyantyn Vorobyov
-
BBoris Yakobowski
Maintainers
Sources
sha256=d2fbb3b8d0ff83945872e9e6fa258e934a706360e698dae3b4d5f971addf7493
doc/frama-c.kernel/Frama_c_kernel/Log/index.html
Module Frama_c_kernel.Log
Logging Services for Frama-C Kernel and Plugins.
type event = {
evt_kind : kind;
evt_plugin : string;
evt_category : string option;
(*message or warning category
*)evt_source : Filepath.position option;
evt_message : string;
}
type 'a pretty_printer =
?current:bool ->
?source:Filepath.position ->
?emitwith:(event -> unit) ->
?echo:bool ->
?once:bool ->
?append:(Format.formatter -> unit) ->
('a, Format.formatter, unit) format ->
'a
Generic type for the various logging channels which are not aborting Frama-C.
- When
current
isfalse
(default for most of the channels), no location is output. When it istrue
, the last registered location is used as current (seeCurrent_loc
). source
is the location to be output. If nil,current
is used to determine if a location should be outputemitwith
function which is called each time an event is processedecho
istrue
if the event should be output somewhere in addition tostdout
append
adds some actions performed on the formatter after the event has been processed.
type ('a, 'b) pretty_aborter =
?current:bool ->
?source:Filepath.position ->
?echo:bool ->
?append:(Format.formatter -> unit) ->
('a, Format.formatter, unit, 'b) format4 ->
'a
Same as Log.pretty_printer
except that channels having this type denote a fatal error aborting Frama-C.
Exception Registry
User error that prevents a plugin to terminate. Argument is the name of the plugin.
Internal error that prevents a plugin to terminate. Argument is the name of the plugin.
exception FeatureRequest of Filepath.position option * string * string
Raised by not_yet_implemented
. You may catch FeatureRequest(s,p,r)
to support degenerated behavior. The (optional) source location is s, the responsible plugin is 'p' and the feature request is 'r'.
Option_signature.Interface
type warn_status =
| Winactive
(*nothing is emitted.
*)| Wfeedback_once
(*combines feedback and once.
*)| Wfeedback
(*emit a feedback message.
*)| Wonce
(*emit a warning message, but only the first time the category is encountered.
*)| Wactive
(*emit a warning message.
*)| Werror_once
(*combines once and error.
*)| Werror
(*emit a message. Execution continues, but exit status will not be 0
*)| Wabort
(*emit a message and abort execution
*)
status of a warning category
module type Messages = sig ... end
val evt_category : event -> string list
Split an event category into its constituants.
Split a category specification into its constituants. "*"
is considered as empty, and ""
categories are skipped.
Sub-category checks. is_subcategory a b
checks whether a
is a sub-category of b
. Indeed, it checks whether b
is a prefix of a
, that is, that a
equals b
or refines b
with (a list of) sub-category(ies).
Each plugin has its own channel to output messages. This functor should not be directly applied by plug-in developer. They should apply Plugin.Register
instead.
Echo and Notification
val set_echo : ?plugin:string -> ?kind:kind list -> bool -> unit
Turns echo on or off. Applies to all channel unless specified, and all kind of messages unless specified.
Register a hook that is called each time an event is emitted. Applies to all channel unless specified, and all kind of messages unless specified.
Warning: when executing the listener, all listeners will be temporarily deactivated in order to avoid infinite recursion.
val echo : event -> unit
Display an event of the terminal, unless echo has been turned off.
val notify : event -> unit
Send an event over the associated listeners.
Channel interface
This is the low-level interface to logging services. Not to be used by casual users.
val new_channel : string -> channel
val log_channel : channel -> ?kind:kind -> 'a pretty_printer
logging function to user-created channel.
val source : file:Filepath.Normalized.t -> line:int -> Filepath.position
val get_current_source : unit -> Filepath.position
Terminal interface
This is the low-level interface to logging services. Not to be used by casual users.
This function has the same parameters as Format.make_formatter.
val print_on_output : (Format.formatter -> unit) -> unit
Direct printing on output. Message echo is delayed until the output is finished. Then, the output is flushed and all pending message are echoed. Notification of listeners is not delayed, however.
Can not be recursively invoked.
val print_delayed : (Format.formatter -> unit) -> unit
Direct printing on output. Same as print_on_output
, except that message echo is not delayed until text material is actually written. This gives an chance for formatters to emit messages before actual pretty printing.
Can not be recursively invoked.