Coccinelle (software) - Coccinelle (software)
Stabilní uvolnění | 1.0.8[1] / 25. září 2019 |
---|---|
Úložiště | |
Napsáno | OCaml a Krajta |
Typ | Statická analýza programu |
Licence | GPLv2 |
webová stránka | kokcinel |
Coccinelle (francouzština pro slunéčko sedmitečné) je open-source nástroj pro párování a transformující se the zdrojový kód programů napsaných v C programovací jazyk.
Užitečnost
Coccinelle byl původně používán k podpoře vývoje Linuxové jádro, poskytující podporu pro změny v knihovně aplikační programovací rozhraní (API), jako je přejmenování a funkce, přidání funkčního argumentu, jehož hodnota je nějakým způsobem závislá na kontextu, a reorganizace a datová struktura.
Lze jej také použít k vyhledání vadných programovacích vzorů v kódu (tj. Částí kódu, které jsou chybné s vysokou pravděpodobností, jako je možná dereference ukazatele NULL) bez jejich transformace. Pak kokcinelrole je blízká roli statická analýza nástroje. Příklady takového použití jsou poskytovány aplikacemi herodotos nástroj, který sleduje varování generovaná programem kokcinel.[2][3]
Podporu pro Coccinelle poskytuje IRILL. Financování rozvoje poskytla Agence Nationale de la Recherche (Francie), dánská rada pro výzkum v oblasti technologií a výrobních věd a INRIA.
Zdrojový kód Coccinelle je licencován podle podmínek verze 2 dokumentu GNU General Public License (GPL).
Sémantický opravný jazyk
Zdrojový kód, který má být porovnán nebo nahrazen, je specifikován pomocí syntaxe "sémantické opravy" založené na náplast syntax.[4] The Sémantický opravný jazyk (SmPL) vzor připomíná a jednotný rozdíl s prohlášeními podobnými písmenu C.[5][6]
Příklad
@@zámek výrazu, příznaky; urb výrazu;@@ spin_lock_irqsave (zámek, vlajky); <...- usb_submit_urb (urb)+ usb_submit_urb (urb, GFP_ATOMIC) ...> spin_unlock_irqrestore (zámek, příznaky);@@výraz urb;@@- usb_submit_urb (urb)+ usb_submit_urb (urb, GFP_KERNEL)
Reference
- ^ „Coccinelle: Nástroj pro porovnávání a transformaci programů pro systémový kód“. coccinelle.gitlabpages.inria.fr. Citováno 2020-08-28.
- ^ Palix, Nicolas; Lawall, Julia; Muller, Gilles (2010). „Sledování vzorů kódu ve více verzích softwaru s Herodotosem“ (PDF). Sborník příspěvků z 9. mezinárodní konference o vývoji softwaru zaměřeného na jednotlivé aspekty. ACM: 169–180. doi:10.1145/1739230.1739250.
- ^ Nicolas Palix. „Nicolas Palix: Herodotos“.
- ^ Padioleau, Yoann; Lawall, Julia; Muller, Gilles (2007). „Sémantické opravy, dokumentace a automatizace kolaterálního vývoje v ovladačích zařízení se systémem Linux“ (PDF). coccinelle.gitlabpages.inria.fr. Citováno 2020-08-29.
- ^ Valerie Henson (2009-01-20). „Sémantická oprava pomocí Coccinelle“. Linux Weekly News. Citováno 2011-04-25.
- ^ Wolfram Sang (2010-03-30). „Evoluční vývoj sémantické opravy pomocí Coccinelle“. Linux Weekly News. Citováno 2011-04-25.