Server plug-in turns Frama-C into a server. It is designed for IDE integration or scripting.
Server is part of the main distribution of Frama-C. It consists of two main distinct parts: (1) a rich API for plug-ins to programmatically register Requests in the server; (2) a collection of protocols to expose registered Requests to the external clients.
Server Request API
Each Frama-C plug-in can register Requests in the server. A request is a normal OCaml routine that interact with the platform. The Server API also offers a typed collection of JSON converters in order to adapt to external clients outside of the OCaml ecosystem.
All registered Requests are programmatically documented and the Server plug-in can generate a complete HTML documentation of all registered requests, with the JSON format of their input and output parameters.
The Server plug-in provides three built-in protocols: one based on Unix sockets, one based on ZeroMQ sockets, and one based on static JSON script files. New protocols can be defined via custom Frama-C plug-ins.
The new GUI of Frama-C, Ivette, uses the Server plug-in to interact with the platform.