Coccinelle
From Wikipedia, the free encyclopedia
Remove ads
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 on saatavilla Linuxille sekä NetBSD:lle ja FreeBSD:lle.[5]
Ohjelman havaitsemia varoituksia seurataan Herodotos-työkalulla.[6]
Remove ads
Historia
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]
Remove ads
Käyttö
Ohjelma käyttää semanttisia muutostiedostoja SmPL-kielellä (Semantic Patch Language), jolloin muutokset eivät ole rivikohtaisia vaan kohdentuu vastaavaan merkitykseen.[7][8][9]
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)
Remove ads
Lähteet
Aiheesta muualla
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads