Coccinelle
Coccinelle | |
---|---|
Kehityshistoria | |
Vakaa versio | 1.0.8 ()[1] |
Tiedot | |
Lisenssi | GPLv2 |
Aiheesta muualla | |
Verkkosivusto | |
Versiohallinta |
Coccinelle on C-kielen parseri ja muunnostyökalu, jota käytetään muun muassa Linux-ytimen kehityksessä ja testaamisessa.[2][3]
Ohjelma on suunniteltu staattiseen analyysiin, jossa yhdestä paikasta löydetty ohjelmointivirhe voidaan työkalun avulla helposti korjata myös muissa paikoissa, joissa sama virhe esiintyy.[4] Ohjelma käyttää semanttisia muutostiedostoja SmPL-kielellä (Semantic Patch Language), jolloin muutokset eivät ole rivikohtaisia vaan kohdentuu vastaavaan merkitykseen.[5]
Ohjelma on saatavilla Linuxille sekä NetBSD:lle ja FreeBSD:lle.[6]
Ohjelman havaitsemia varoituksia seurataan Herodotos-työkalulla.[7]
Historia
[muokkaa | muokkaa wikitekstiä]Ohjelman alku ajoittuu vuoteen 2004, jolloin sovelluksen kehittäjä Julia Lawall oli sapattivapaalla.[4] Tuohon aikaan Linux-ytimen versio 2.6 oli juuri julkaistu, mutta monet ajurit olivat vielä versiolle 2.4.[4] Ajurien siirtämiseksi oli tarpeen tehdä muutoksia, kuten lisätä parametreja funktiokutsuihin.[4] Ongelman ratkaisuksi Lawall ja kolme muuta kehittivät Coccinellen Kööpenhaminan yliopistossa vuosien 2005 ja 2007 välillä.[4] Ohjelman tuottamia muutostiedostoja ei voi ”sokkona” käyttää vaan on edelleen vastuu tarkistaa tuotetut muutokset.[4]
Käyttö
[muokkaa | muokkaa wikitekstiä]Esimerkiksi toistuva virhe on loogisten operaatioiden järjestys:[4]
if (!block->flags & ACPI_WMI_METHOD)
Virheen korjaamiseksi oikea järjestys on:[4]
if (!(block->flags & ACPI_WMI_METHOD))
Sen sijaan, että jokainen tapaus etsittäisiin ja korjattaisiin käsin voidaan molemmat tehdä automatisoimalla seuraavasti:[4]
@@ expression E; constant C; @@ - !E & C + !(E & C)
Lähteet
[muokkaa | muokkaa wikitekstiä]- ↑ https://github.com/coccinelle/coccinelle/releases/tag/1.0.8. Tieto on haettu Wikidatasta.
- ↑ Michael Kerrisk: KS2012: Kernel build/boot testing 5.9.2012. Lwn.net. Viitattu 7.8.2019. (englanniksi)
- ↑ Julia Lawall, Gilles Muller: Coccinelle: 10 years of automated evolution in the Linux kernel dl.acm.org. doi:10.5555/3277355.3277413 Viitattu 27.1.2020. (englanniksi)
- ↑ a b c d e f g h i Jake Edge: Inside the mind of a Coccinelle programmer 31.8.2016. Lwn.net. Viitattu 27.1.2020. (englanniksi)
- ↑ Yoann Padioleau, Julia L. Lawall, Gilles Muller: Semantic Patches (PDF) coccinelle.lip6.fr. Viitattu 27.1.2020. (englanniksi)
- ↑ Coccinelle kernel.org. Viitattu 27.1.2020. (englanniksi)
- ↑ Nicolas Palix, Julia Lawall, Gilles Muller: Tracking Code Patterns over Multiple Software Versions with Herodotos (PDF) coccinelle.lip6.fr. Viitattu 27.1.2020. (englanniksi)
Aiheesta muualla
[muokkaa | muokkaa wikitekstiä]- Semantic patching with Coccinelle (englanniksi)
- Evolutionary development of a semantic patch using Coccinelle (englanniksi)
- http://coccinellery.org