Movatterモバイル変換


[0]ホーム

URL:


Jump to content
WikipediaThe Free Encyclopedia
Search

Frama-C

From Wikipedia, the free encyclopedia
Libre Ocaml formal C verifier
Not to be confused withFramasoft.
Frama-C
Developer(s)Commissariat à l'Énergie Atomique (CEA-List) andInria
Repository
Written inOCaml
Operating systemMicrosoft Windows,FreeBSD,OpenBSD,Linux,Mac OS X
Available inEnglish
TypeFormal verification,Static code analysis
LicensemostlyLGPL, some parts underBSD licenses
Websiteframa-c.com

Frama-C[1] stands forFramework for Modular Analysis ofC programs. Frama-C is a set of interoperableprogram analyzers forC programs. Frama-C has been developed by the FrenchCommissariat à l'Énergie Atomique et aux Énergies Alternatives (CEA-List)[2] andInria. It has also received funding from theCore Infrastructure Initiative. Frama-C, as astatic analyzer, inspects programs without executing them. Despite its name, the software is not related to the French projectFramasoft.

Architecture

[edit]
This sectionis missing information about use ofClang for C++ input at leastsince 2014. Please expand the section to include this information. Further details may exist on thetalk page.(September 2021)

Frama-C has a modular plugin architecture[3] comparable to that ofEclipse (software) orGIMP.

Frama-C relies on CIL (C Intermediate Language) to generate anabstract syntax tree.Theabstract syntax tree supports annotations written inANSI/ISO C Specification Language (ACSL).

Several modules can manipulate theabstract syntax tree to addANSI/ISO C Specification Language (ACSL) annotations. Among frequently used[vague] plugins are:

  • Value analysis – computes a value or a set of possible values for each variable in a program. This plugin usesabstract interpretation techniques and many other plugins make use of its results.
  • Jessie – verifies properties in a deductive manner. Jessie relies on the Why[4] or Why3 back-end to enable proof obligations to be sent toautomatic theorem provers like Z3, Simplify,Alt-Ergo orinteractive theorem provers likeCoq or Why. Using Jessie, an implementation of bubble-sort or a toy e-voting system can be proved to satisfy their respective specifications. It uses a separation memory model inspired byseparation logic.
  • WP (Weakest Precondition) – similar toJessie, verifies properties in a deductive manner. Unlike Jessie, it focuses on parameterization with regards to the memory model. WP is designed to cooperate with other Frama-C plugins such as the value analysis plug-in, unlike Jessie that compiles the C program directly into the Why language. WP can optionally use the Why3 platform to invoke many other automated and interactive provers.
  • E-ACSL – (forExecutable ACSL) instruments a program to performruntime verification of properties, possibly in complement with other plugins such as value analysis and WP (e.g. by checking assertions at runtime for the properties that could not be statically verified with the other plugins).
  • Impact analysis – highlights the impacts of a modification in the C source code.
  • Slicing – enablesslicing of a program. It enables generation of a smaller new C program that preserves some given properties.[5]
  • Spare code – removes useless code from a C program.

Other plugins are:

Features

[edit]

Frama-C can be used for the following purposes:

  • To understand C code which you have not written. In particular, Frama-C enables one to observe a set of values, slice the program into shorter programs, and navigate in the program.
  • To prove formal properties on the code. Using specifications written inANSI/ISO C Specification Language enables it to ensure properties of the code for any possible behavior. Frama-C handles floating point numbers.[6]
  • To enforce coding standards orcode conventions on C source code, by means of custom plugin(s)[7]
  • To instrument C code against some security flaws[8]

See also

[edit]

References

[edit]
  1. ^"Frama-C".frama-c.com. Retrieved2016-11-05.
  2. ^CEA LIST."CEA LIST, Smart digital systems". Retrieved2016-11-05.
  3. ^Pascal Cuoq; et al. (August 2009). "Experience report: OCaml for an industrial-strength static analysis framework".ACM SIGPLAN Notices.44 (9):281–286.doi:10.1145/1631687.1596591.
  4. ^"Why homepage".
  5. ^Benjamin Monate; Julien Signoles (2008). "Slicing for Security of Code".Trusted Computing - Challenges and Applications. Lecture Notes in Computer Science. Vol. 4968/2008. pp. 133–142.doi:10.1007/978-3-540-68979-9_10.ISBN 978-3-540-68978-2.
  6. ^Sylvie Boldo; Thi Minh Tuyen Nguyen (2010)."Hardware-independent proofs of numerical programs"(PDF).Proceedings of NFM 2010.
  7. ^David Delmas; Stéphane Duprat; Victoria Moya Lamiel; Julien Signoles."Taster, a Frama-C plug-in to enforce Coding Standards"(PDF).Embedded Real Time Software and Systems 2010, Toulouse, France.
  8. ^Jonathan-Christofer Demay; Éric Totel; Frédéric Tronel (2009). "Automatic Software Instrumentation for the Detection of Non-control-data Attacks".Recent Advances in Intrusion Detection. Lecture Notes in Computer Science. Vol. 5758/2009. pp. 348–349.doi:10.1007/978-3-642-04342-0_19.ISBN 978-3-642-04341-3.
  9. ^"Lessons Learned from Verifying Actual C Code with Frama-C".YouTube. 11 July 2021.
  10. ^https://cea.hal.science/cea-04477151/file/2021_cacm.pdf

External links

[edit]
ML programming
Software
Implementations,
dialects
Caml
Standard ML
Dependent ML
Programming tools
Theorem provers,
proof assistants
Community
Designers
  • Lennart Augustsson (Lazy ML)
  • Damien Doligez (OCaml)
  • Gérard Huet (Caml)
  • Xavier Leroy (Caml, OCaml)
  • Robin Milner (ML)
  • Don Sannella (Extended ML)
  • Don Syme (F#)
  • Retrieved from "https://en.wikipedia.org/w/index.php?title=Frama-C&oldid=1268124049"
    Categories:
    Hidden categories:

    [8]ページ先頭

    ©2009-2025 Movatter.jp