Frama-Cとは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > 百科事典 > Frama-Cの意味・解説 

Frama-C

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2026/09/22 12:33 UTC 版)

Frama-C
開発元 Commissariat à l'Énergie Atomique (CEA-List) and Inria
リポジトリ ウィキデータを編集
プログラミング
言語
OCaml, C
対応OS Linux, macOS, FreeBSD, OpenBSD, NetBSD, Microsoft Windows.[1]
対応言語 English
種別 Formal verification, Static code analysis
ライセンス mostly LGPL, some parts under BSD licenses
公式サイト frama-c.com
テンプレートを表示

Frama-Cは、C言語のプログラムを対象とした相互運用可能なプログラム解析ツール群である。名称の「Frama-C」は Framework for Modular Analysis of C programs(Cプログラムのためのモジュール式解析フレームワーク)の略である。フランスの原子力・代替エネルギー庁(CEA-List)とInria(フランス国立情報学自動制御研究所)によって開発されており、Core Infrastructure Initiativeからの資金提供も受けている。Frama-Cは静的解析ツールでありプログラムを実行せずに検査する。名称は似ているが、フランスのプロジェクトであるフラーマソフトとは無関係である。

アーキテクチャ

  Frama-Cは、EclipseやGIMPと同様のモジュール式プラグインアーキテクチャを採用している。

Frama-Cは、CIL(C Intermediate Language)を用いて抽象構文木を生成する。この抽象構文木は、ANSI/ISO C Specification Language(ACSL)で記述された注釈(アノテーション)に対応している。

いくつかのモジュールは抽象構文木を操作し、ACSLの注釈を追加することができる。よく使われるプラグインには次のようなものがある。

  • Value analysis:プログラム中の各変数について、その値、または取りうる値の集合を計算する。抽象解釈の手法を用いており、他の多くのプラグインがその解析結果を利用している。
  • Jessie:性質を演繹的に検証する。WhyまたはWhy3をバックエンドとして用い、証明責務(proof obligation)をZ3、Simplify、Alt-Ergoなどの自動定理証明器や、Rocq(旧称Coq)、Whyなどの対話型定理証明器に送ることができる。Jessieを使うと、バブルソートの実装や簡易的な電子投票システムが、それぞれの仕様を満たすことを証明できる。また、分離論理に着想を得た分離メモリモデルを採用している。
  • WP(Weakest Precondition、最弱事前条件):Jessieと同様に、性質を演繹的に検証する。Jessieと異なり、メモリモデルを切り替えられるようにパラメータ化することに重点を置いている。また、Cプログラムを直接Why言語に変換するJessieと違い、WPはValue analysisなど他のFrama-Cプラグインと連携するよう設計されている。オプションでWhy3プラットフォームを利用すれば、他の多くの自動証明器や対話型証明器を呼び出すこともできる。
  • E-ACSL(Executable ACSL):プログラムに計装を施し、性質の実行時検証を行う。Value analysisやWPなど他のプラグインを補う形で使うこともできる(例えば、他のプラグインで静的に検証できなかった性質について、アサーションを実行時に検査する)。
  • Impact analysis(影響解析):Cソースコードへの変更が及ぼす影響を明示する。
  • Slicing(スライシング):プログラムスライシングを行う。与えられた性質を保ったまま、より小さな新しいCプログラムを生成できる。
  • Spare code:Cプログラムから不要なコードを取り除く。

その他のプラグイン:

  • Dominators:各文の支配節点(dominator)と後支配節点(postdominator)を計算する。
  • From analysis:関数的依存関係を計算する。

機能

Frama-Cは次のような目的に利用できる。

  • 他人が書いたCコードを理解する。特に、取りうる値の集合を観察したり、プログラムをより短いプログラムにスライスしたり、プログラム内を移動しながら読み進めたりできる。
  • コードの形式的な性質を証明する。ACSLで記述した仕様を用いることで、起こりうるあらゆる振る舞いについて、コードの性質を保証できる。浮動小数点数も扱うことができる。
  • 独自のプラグインを用いて、Cソースコードにコーディング規約を適用する。
  • 特定のセキュリティ上の欠陥への対策として、Cコードに計装を施す。

関連項目

  • SPARK (programming language)
  • Framatome — A business with a long-term partnership with Frama-C[2][3]

脚注

  1. ↑ “opam - Install”. opam.ocaml.org. 2026年7月4日閲覧。
  2. ↑ “Lessons Learned from Verifying Actual C Code with Frama-C”. YouTube (2021年7月11日). 2026年9月22日閲覧。
  3. ↑ Baudin (2024年2月26日). “The dogged pursuit of bug-free C programs: The Frama-C Software Analysis Platform”. cea.hal.science. 2025年8月16日時点のオリジナルよりアーカイブ。2026年3月17日閲覧。

外部リンク




英和和英テキスト翻訳

英語⇒日本語日本語⇒英語
  •  Frama-Cのページへのリンク

辞書ショートカット

すべての辞書の索引

「Frama-C」の関連用語

Frama-Cのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



Frama-Cのページの著作権

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのFrama-C (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。

©2026 GRAS Group, Inc.RSS