-
Virgile Prevosto authoredVirgile Prevosto authored
Contributing to Frama-C
We always welcome technical as well as non-technical contributions from the community. There are several ways to participate in the Frama-C project:
-
Asking questions and discussing at StackOverflow and through the Frama-C-discuss mailing list;
-
Reporting bugs via Gitlab issues;
-
Submitting bug fixes, improvements and features via Gitlab merge requests;
-
Developing external plug-ins and sharing it with us through a Gitlab merge request;
-
Joining the Frama-C team (as an intern, a PhD student, a postdoctoral researcher, or a research engineer).
We give below some guidelines in order to ease the submission of a merge request and optimize its integration with the Frama-C existing codebase.
Submitting bug fixes, improvements, and features
External contributions can be proposed via the public Frama-C gitlab repository, by following the recommended workflow in git development: fork the frama-c repository, develop in a dedicated branch and submit a merge request.
The detailed steps to submit a contribution to Frama-C are:
-
If you plan to make a significant contribution to Frama-C, please open an issue describing your ideas, to discuss it with the Frama-C development team.
-
Fork the public Frama-C repository (choosing your Gitlab account as a destination);
-
Clone the forked Frama-C snapshot repository on your computer;
-
Create and switch to a dedicated branch. We suggest the following naming convention:
-
fix/short-description
for bug fixes (correcting an incorrect behavior); -
feature/short-description
for features (adding a new behavior).
-
-
Locally make your contribution by adding/editing/deleting files and following the coding conventions;
-
(Optional) Locally add non-regression test cases to the appropriate subdirectory in
./tests/
. Thehello
tutorial in the plug-in developer manual provides an example of the use of the dedicatedptests
tool used by Frama-C developers. The full documentation forptests
is also present later in the same manual. You can also provide the non-regression test case in the Gitlab issue discussion and we will integrate it. -
Check for unexpected changes. Use the command
make lint
in your terminal from the Frama-C root directory to detect trailing spaces, tabulations or incorrect indentation (ocp-ident >= 1.7.0 is needed). -
Locally run the test framework of Frama-C by typing
make tests
in your terminal (you should be in the Frama-C root directory); -
Locally add (if needed) and commit your contribution;
-
Push your contribution to Gitlab;
-
Make a Gitlab merge request. The target should remain as repository
pub/frama-c
and branchmaster
while the source should be your personal project and your chosen branch name. -
If needed (i.e. you didn't already do that and your contribution is not trivial in the sense of this document), please don't forget to fill and sign the Contributor Licence Agreement and send us the signed version at
cla AT frama-c DOT com
For convenience, we recall the typical git
commands to be used through these steps:
git clone https://git.frama-c.com/<username>/frama-c.git
git checkout -b <branch-name>
git diff --check
git add <file1 file 2>
git commit -m "<Commit message>"
git push origin <branch-name>