[go: nahoru, domu]

Sparse on C-kielen semanttinen parseri, jota käytetään muun muassa Linux-ytimen kehityksessä mahdollisten ongelmakohtien havaitsemiseen.[2][3] Ohjelman alkuperäinen tekijä on Linus Torvalds, joka aloitti ohjelman kehittämisen vuonna 2003.[2][4]

Sparse
Luoja Linus Torvalds
Kehityshistoria
Vakaa versio 0.6.1[1] / 13.10.2019[1]
Tiedot
Lisenssi MIT-lisenssi
Aiheesta muualla
Versiohallinta

Ohjelma tekee staattisen analyysin lähdekoodista.[4] Ohjelman ensimmäinen ylläpitäjä oli Josh Triplett vuodesta 2006, jonka jälkeen seurasivat Christopher Li vuodesta 2009 ja Luc Van Oostenryck vuodesta 2018.[4]

Torvalds on sanonut saaneensa inspiraatiota ”Stanford checker” -ohjelmasta, jonka lähdekoodit eivät olleet saatavilla.[5] ”Stanford checkerin” kehittäjät perustivat yhtiön nimeltä Coverity ja julkaisivat ohjelmansa kaupallisena ohjelmana nimeltä ”SWAT”.[6]

Ohjelma voi tunnistaa ja seurata annotaation avulla eri osoiteavaruuksien käyttöä kuten ytimen avaruuden ja käyttäjäavaruuden osoitteiden käyttöä, joiden eroista GCC-kääntäjä ei ole tietoinen.[5]

Yksi ohjelman tavoitteista on ollut saada vahvempi staattinen tyyppijärjestelmä kuin dynaaminen tyyppitarkistus lisäämättä suoritusaikaista kuormaa.[5] Ohjelmaa suoritetaan osana Linux-ytimen automaattista testaamista linux-next versiohallintahaarasta.[7] Smatch on sparsen päälle rakennettu työkalu, joka on tehty seuraamaan tietoja ja löytämään tilanteita jotka ovat aina (tai ei koskaan) tosia.[8]

Lähteet

muokkaa
  1. a b Luc Van Oostenryck: Sparse v0.6.1 marc.info. 13.10.2019. Viitattu 16.1.2020. (englanniksi)
  2. a b Neil Brown: Sparse: a look under the hood 8.6.2016. Lwn.net. Viitattu 3.9.2019. (englanniksi)
  3. Sparse kernel.org. Viitattu 3.9.2019. (englanniksi)
  4. a b c Sparse - a Semantic Parser for C sparse.wiki.kernel.org. Viitattu 3.9.2019. (englanniksi)
  5. a b c Doc Searls: Linus & the Lunatics, Part I 24.11.2003. Linux Journal. Viitattu 3.9.2019. (englanniksi)
  6. corbet: Finding kernel problems automatically 1.6.2004. Lwn.net. Viitattu 3.9.2019. (englanniksi)
  7. Michael Kerrisk: KS2012: Kernel build/boot testing 5.9.2012. Lwn.net. Viitattu 7.8.2019. (englanniksi)
  8. Neil Brown: Smatch: pluggable static analysis for C 22.6.2016. Lwn.net. Viitattu 3.9.2019. (englanniksi)

Aiheesta muualla

muokkaa