Project Management

The Frama-C current project can be managed with the server requests provided below.

Current Project

Initially, the current project is the one selected when the server starts. Hence, from the Frama-C command line, -then-on <P> -server-xxx would start the server with current project <P>.

When modifying the current project through request Kernel.Project.SetCurrent, client shall wait for an acknowledgement before sending further GET requests. Otherwise, the GET might be executed on a different project, due to the asynchronous behavior of the server.

However, it is still possible to execute a request on a specific project with Kernel.Project.{Get|Set|Exec}On requests.

kernel.project.current (STATE)

Current Frama-C project

kernel.project.signalCurrent (SIGNAL)

Signal for state current

kernel.project.getCurrent (GET)

Getter for state current

input ::= null

output ::= number

kernel.project.setCurrent (SET)

Setter for state current

input ::= number

output ::= null

kernel.project.create (SET)

Creates a new Frama-C project with the given name

input ::= string

output ::= null

kernel.project.rename (SET)

Rename a project

input ::= [ number , string ]

output ::= string ?

kernel.project.remove (SET)

Remove a project from the session

input ::= number

output ::= string ?

kernel.project.copy (SET)

Duplicate a project

input ::= [ number , string ]

output ::= string ?

kernel.project.load (SET)

Load a saved project

input ::= string

output ::= string ?

kernel.project.save (SET)

Save a project on disk

input ::= [ number , string ]

output ::= string ?

kernel.project.list (ARRAY)

List of Frama-C projects

kernel.project.signalList (SIGNAL)

Signal for array list

kernel.project.listData (DATA)

Data for array rows list

listData ::= { fields… }

Field Format Description
"key" $list Entry identifier.
"id" number Project ID
"name" string Project name

kernel.project.fetchList (GET)

Data fetcher for array list

input ::= number

output ::= { output… }

Output Format Description
"reload" boolean array fully reloaded
"removed" $list [] removed entries
"updated" listData [] updated entries
"pending" number remaining entries to be fetched

kernel.project.reloadList (GET)

Force full reload for array list

input ::= null

output ::= null