Commit 9b61cafc authored by Thibaud Antignac's avatar Thibaud Antignac Committed by Virgile Prevosto
Browse files

Added how to for external plug-ins contribs

parent 9f11822f
......@@ -110,61 +110,34 @@ Developing external plug-ins
Frama-C is a modular platform for which it is possible to develop external
plug-ins as documented in the
[Plug-in Development Guide](
[Plug-In development guide](
Such plug-ins normally do not require changes to the Frama-C source code and can
be developed completely independently, for instance in a separate Git
repository as exemplified by the [Hello plug-in](
However, to make it easier for your users to compile and use your plug-in, even
as newer releases are made available, we recommend the following workflow:
1. [Fork the Frama-C snapshot repository](
(choosing your Github account as a destination);
2. Clone the forked Frama-C snapshot repository on your computer by typing
git clone
in your terminal (change `username` by your Github username);
1. Write your external plug-in as indicated in the
[Plug-In development guide](;
3. Locally make your contribution by adding/editing/deleting files in the
`./src/plugins/` directory, along with appropriate
`` and `` files, and following
the [coding conventions](#coding-conventions);
2. Create an `opam` package by
[pinning your local plug-in]( and
[editing the `opam` file](
You can have a look at the
[`opam` file of the Hello plug-in](
if necessary.
4. Optionnally locally add non-regression test cases to the appropriate
subdirectory in `./tests/`. The
[plug-in developer manual](
exemplifies the use of the dedicated `ptests` tool used by Frama-C developers
in its `hello` tutorial and provides a documentation of it in a full section.
You can also provide the non-regression test case in the Github issue
discussion and we will integrate it).
3. Optionnally
[publish your plug-in](
in the official OPAM packages repository.
5. Locally run the test framework of Frama-C by typing
make tests
in your terminal (you should be in the Frama-C root directory);
6. Locally add (if needed) and commit your contribution by typing
git add -A
git commit -m "Commit message"
in your terminal (this adds all the new files to the commit, you can pick the
relevant files as described in the
[`Git` documentation](;
7. Push your contribution to Github by typing
git push -u origin branch-name
in your terminal (change `branch-name` by the right branch name).
4. Let know the
[Frama-C-discuss mailing list](
about your contribution to the Frama-C ecosystem. Well done!
This will ensure that (1) the version of Frama-C that is available with your
plug-in is guaranteed to compile and work, independently of API changes;
(2) updating your plug-in will only require synchronizing with the
Frama-C snapshot repository.
The main advantage of this way to proceed is the delegation to OPAM of the task
of keeping consistent Frama-C versions and dependencies.
Coding conventions
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment