Loading article…
| 安定版リリース | 1.1.0 [1]
/ 2021年2月25日 |
|---|---|
| リポジトリ |
|
| 書かれた | OCamlとPython |
| タイプ | 静的プログラム解析 |
| ライセンス | GPLv2 |
| Webサイト | coccinelle.gitlabpages.inria.fr/website/ |
Coccinelle (イタリア語でてんとう虫) は、Cプログラミング言語で書かれたプログラムのソースコードを照合および変換するためのオープン ソースです。
ユーティリティ
Coccinelle は当初、 Linux カーネルの進化を支援するために使用され、関数の名前変更、値が何らかの形でコンテキストに依存する関数引数の追加、データ構造の再構成など、ライブラリのアプリケーション プログラミング インターフェイス(API)の変更をサポートしていました。
また、コード内の欠陥のあるプログラミングパターン(つまり、NULLポインタ参照の可能性など、高い確率でエラーとなるコード部分)を変換せずに見つけるためにも使用できます。したがって、coccinelleの役割は静的解析ツールの役割に近いものです。そのような使用例としては、 coccinelleによって生成された警告を追跡するherodotosツールのアプリケーションが挙げられます。 [2] [3]
Coccinelle のサポートはIRILLによって提供されています。開発資金は、Agence Nationale de la Recherche (フランス)、デンマーク技術生産科学研究評議会、INRIAによって提供されています。
Coccinelle のソース コードは、GNU General Public License (GPL) バージョン 2 の条件に基づいてライセンスされています。
セマンティックパッチ言語
一致または置換されるソースコードは、パッチ構文に基づいた「セマンティックパッチ」構文を使用して指定されます。[4]セマンティックパッチ言語(SmPL)パターンは、 Cのような宣言を持つ統合diffに似ています。[5] [6]
例
@@
式ロック、フラグ。
表現 urb;
@@
spin_lock_irqsave(lock, flags);
<...
- usb_submit_urb(urb)
+ usb_submit_urb(urb, GFP_ATOMIC)
...>
spin_unlock_irqrestore(lock, flags);
@@
表現 urb;
@@
- usb_submit_urb(urb)
+ usb_submit_urb(urb, GFP_KERNEL)
参考文献
- ^ 「Coccinelle: システムコード用のプログラムマッチングおよび変換ツール」。coccinelle.gitlabpages.inria.fr 。2021年3月9日閲覧。
- ^ Palix, Nicolas; Lawall, Julia ; Muller, Gilles (2010). 「Herodotos による複数のソフトウェア バージョンでのコード パターンの追跡」(PDF) . 第 9 回国際アスペクト指向ソフトウェア開発会議の議事録(PDF) . ACM. pp. 169–180. doi :10.1145/1739230.1739250. ISBN 9781605589589.S2CID 1082611 。
- ^ ニコラス・パリクス。 「ニコラ・パリックス:ヘロドトス」。
- ^ Padioleau, Yoann; Lawall, Julia ; Muller, Gilles (2007). 「セマンティック パッチ、Linux デバイス ドライバーの付随的進化の文書化と自動化」(PDF) . coccinelle.gitlabpages.inria.fr . 2020 年 8 月 29 日閲覧。
- ^ Valerie Henson (2009-01-20). 「Coccinelle によるセマンティック パッチ」. Linux Weekly News . 2011-04-25閲覧。
- ^ Wolfram Sang (2010-03-30). 「Coccinelle を使用したセマンティック パッチの進化的開発」. Linux Weekly News . 2011-04-25閲覧。
外部リンク
- GitHubのソースコードリポジトリ
- 公式最新安定版ダウンロード
- コクシネルの使用法を説明する記事
- Coccinellery: セマンティック パッチ ギャラリー
