
Frame-C est une plate-forme dédiée à l'analyse du code source écrit en C.
Frama-C a transféré son référentiel officiel vers notre instance Gitlab auto-hébergée.
Les versions officielles (à partir de FraM-C 21) ne seront plus mises à jour ici.
Des instantanés nocturnes sont également disponibles dans notre GitLab! Vous pouvez désormais avoir accès à la dernière version de développement à: https://git.frama-com/pub/frama-c/-/tree/master
Le tracker officiel du numéro Frame-C est maintenant à notre gitlab: https://git.frama-com/pub/frama-c/-/issues
Vous pouvez soumettre des problèmes et extraire les demandes à l'aide de votre connexion GitHub (choisissez "Connectez-vous avec GitHub" lorsque vous y êtes invité).
Rendez-vous là-bas!
Frame-C rassemble plusieurs techniques d'analyse dans une seule plate-forme collaborative, composée d'un noyau fournissant un ensemble de fonctionnalités de base (par exemple, un AST normalisé pour les programmes C) plus un ensemble d'analyseurs, appelés plug-ins . Les plug-ins peuvent s'appuyer sur les résultats calculés par d'autres plug-ins dans la plate-forme.
Grâce à cette approche, Frara-C fournit des outils sophistiqués, notamment:
Ces plug-ins partagent un langage commun et peuvent échanger des informations via des propriétés ACSL ( ANSI / ISO C Specification Language ). Les plug-ins peuvent également collaborer via leurs API.
Pour des informations plus détaillées sur l'installation de l'OPAM / FRAMA-C, voir Install.md.
Frame-C est disponible via OPAM, le gestionnaire de packages OCAML. Il s'agit de la méthode d'installation préférée. Assurez-vous d'installer OPAM V2.0 ou supérieur. Ensuite, la séquence de commandes suivante devrait installer Frara-C et sa GUI:
opam init
opam install depext
opam depext frama-c
opam install frama-c
Frame-C est développé principalement dans Linux, souvent testé dans MacOS (via Homebrew), et parfois testé sur Windows (via le sous-système Windows pour Linux).
Frame-C peut être exécuté à partir de la ligne de commande ou via son interface graphique.
L'utilisation recommandée pour les fichiers simples est l'une des lignes suivantes:
frama-c file.c -<plugin> [options]
frama-c-gui file.c
Où -<plugin> est l'un des nombreux plug-ins Frame-C, par exemple -eva , ou -wp , ou -metrics , etc. Les plug-ins peuvent également être exécutés directement à partir de l'interface graphique.
Pour répertorier tous les plug-ins, exécutez:
frama-c -plugins
Chaque plug-in dispose d'une commande d'aide ( -<plugin>-help ou -<plugin>-h ) qui décrit ses plusieurs options.
Enfin, la liste des options régissant le comportement du noyau de Frame-C lui-même est disponible à travers
frama-c -kernel-help
Pour des scénarios d'utilisation plus complexes (beaucoup de fichiers et répertoires, avec plusieurs directives de prétraitement), nous vous recommandons de diviser l'utilisation de Frama-C en deux parties:
L'analyse implique généralement de donner des arguments supplémentaires au préprocesseur C, donc l'option -cpp-extra-args est souvent utile, comme dans l'exemple ci-dessous:
frama-c *.c *.h -cpp-extra-args="-D<define> -I<include>" -save parsed.sav
Les résultats sont ensuite chargés dans Frame-C pour d'autres analyses ou pour l'inspection via l'interface graphique:
frama-c -load parsed.sav -<plugin> [options]
frama-c-gui -load parsed.sav -<plugin> [options]
Les liens vers les manuels des utilisateurs et des développeurs, les archives de frames et les manuels du plug-in sont disponibles à
http://frama-com/download.html
Stackoverflow possède plusieurs questions avec la balise frama-c , qui est surveillée par plusieurs membres de la communauté Frama-C.
La liste de diffusion FRAMA-C-DISCUSS est utilisée pour les annonces et les discussions générales.
Le système officiel de suivi des bogues peut être utilisé pour les rapports de bogues.
Le Wiki Frame-C a des informations utiles, bien qu'elle ne soit pas entièrement à jour.
Le blog Frama-C propose plusieurs articles sur les nouveaux développements de FraM-C, ainsi que des discussions générales sur la langue C, un comportement indéfini, des calculs à point flottante, etc.
Le référentiel instantané GitHub contient les archives .tar.gz de versions de frama-c stables, prêtes à être clonées. Il peut également être utilisé pour signaler les problèmes et soumettre des demandes de traction.