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]

Tämä artikkeli kertoo tietokoneohjelmasta. Muita merkityksiä täsmennyssivulla.
Pikafaktoja Kehityshistoria, Tiedot ...

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

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads