Koodikatselmoinnin automatisointi

Verkkopalveluiden kehittäjille on tarjolla palveluita, jotka nopeuttavat kehitysprosessia katselmoinnin osalta. Automatisoinnin avulla voidaan keventää työvaiheita ja varmistaa laadun tasaisuus ilman proikkarin nalkutusta.

90-luvulla meille opetettiin yliopistossa kuinka tärkeää koodikatselmointi on laadunvarmistuksessa. Professorin näkemys prosessista oli tiivistetysti kuvattuna tulostaa lähdekoodi ja antaa pumaska kollegan kahlattavaksi. Tämä oli ehkä konkreettisin oppi mitä opinahjosta on mukaan tarjottu ja ilmeisesti näin joissain organisaatiossa toimittiinkin, vaikka en olekaan tätä toimintamallia itse koskaan käytössä kohdannut. 

Kehittyneiden versionhallintapalveluiden myötä käytäntö on myöhempinä aikoina vaihtunut muutoslokien läpikäyntiin, mikä on huomattavasti nopeampaa, mutta edelleen virhealtista. Ihminen on edelleen prosessin heikoin lenkki. Jotain voi aina jäädä huomioimatta tai katsoa läpi sormien. Koodarit ovat ihmisistä ehkä eniten subjektiivisia mieltymyksiltään ja tämäkin voi evaluoinnissa näkyä. Katselmoinnin vaatima ajankäyttö aiheuttaa myös pullonkaulaa prosessissa, ja jonkinlaista hintalappuakin tälle voi määrittää työnajan käytön suhteen.

Katselmointi kannattaakin automatisoida osaksi kehitysprosessia.

Verkkopalveluiden kehittäjille löytyy useita edullisia palveluita, jotka hoitavat katselmoinnin automaattisesti ja vaivattomasti. Nämä palvelut integroituvat yleisimpiin versionhallintapalveluihin (Github, Bitbucket, jne) ja saavat reaaliaikaisesti tiedon tehdyistä muutoksista. Kun koodaaja lähettää versiohallintaan tekemänsä työn, katselmointipalvelu ottaa tästä kopin ja tutkii koodin sääntöjänsä vasten. Kun evaluointi on valmis, sähköpostiin saapuu yhteenveto, mistä käy ilmi mahdolliset kehityskohdat tai ongelmat. Sääntöjä voidaan muokata, lisätä ja poistaa käytöstä. Kokemukseni mukaan säännöt ovat yleensä aika tiukat, ja joitain höllennyksiä täytyy tehdä. Yleisesti ottaen oletusasetukset ovat kuitenkin lähellä parhaita käytäntöjä ja kehitystapoja.

Automatisointi sopii erityisen hyvin projekteihin, joissa on mukana useita koodareita, mutta myös yhdenmiehen projektit hyötyvät silminnähden automatisoinnista. Robotin huolehtiessa laadunvalvonnasta sooloprojektissakaan ei voi mennä mistä aita on matalin, mikäli kunnianhimo ei sulata huonoja arvosanoja työnlaadusta. Esimerkiksi Codacy (https://www.codacy.com/) arvostelee koodin tietoturvan, suorituskyvyn, virhealttiuden, dokumentaation, yhteensopivuuden, tyylin/ulkoasun, kompleksisuuden ja tarpeettoman koodin näkökulmista. Ainakaan itselläni ei ylpeys anna periksi mikäli yleisarvosana ei yllä A-luokkaan.

Screenshot 2015-03-19 10.33.38.png
Katselmoinnin pelillästäminen arvosanoilla

Codacy ja Scrutinizer (https://scrutinizer-ci.com/) tarjovat palvelunsa ilmaiseksi avoimen lähdekoodin projekteille. Nämä myös tukevat, tai tulevat tukemaan useita ohjelmointikieliä. SensioLabsin Insight (https://insight.sensiolabs.com) on puolestaan suunnattu Symfony2 -frameworkin projekteille ja on ehdottamasti tutustumisen arvoinen mikäli SF2 on käytetyn pinon pohjalla. 

Automatisoinnin käyttöönoton ei tarvitse kokonaan korvata manuaalista evaluointia. Vaikkakin tietokone tekee asioita tunnollisemmin kuin huolellisinkaan ihminen, niin robotti toimii kuitenkin vain ohjeidensa mukaisesti. Se ei esimerkiksi pysty ottamaan kantaa onko toteutus optimaallisin mahdollinen lähestymistapa ongelmaan tai onko toteutus uudelleenkäytettävissä toisessa kontekstissa. Automatisoinnilla pystytään kuitenkin merkittävästi vähentämään työkuormaa projektin teknisen johdon hartioilta ja nopeuttamaan kehitysprosessia.

Kirjoittaja: Veli-Matti Viippola