Integrointi vikaseurantaohjelmiin

Ohjelmistokehityksessä on tavallista, että muutokset liittyvät johonkin vikaan tai parannushedotukseen. Vikaseurantaohjelmien käyttäjät haluavat usein kytkeä Subversioniin tehdyt muutokset tiettyyn tunnukseen vikaseurantaohjelmassa. Useimpien tällaisten ohjelmien mukana tuleekin ennen toimitusta suoritettava komentojono, joka jäsentää lokiviestin ja etsii vikatunnuksen, johon toimitus liittyy. Tämä on hieman virhealtista, koska se luottaa käyttäjän kykyyn kirjoittaa lokiviesti virheittä, jotta komentojono osaa jäsentää sen oikein.

TortoiseSVN voi auttaa käyttäjää kahdella tavalla::

  1. Kun käyttäjä syöttää lokiviestin, toimitukseen liittyvä vikatunnus voidaan lisätä automaattisesti. Tämä vähentää riskiä, että käyttäjä syöttää vikatunnuksen siten, että sitä ei voida jäsentää oikein.

    TortoiseSVN voi myös korostaa virheenjäljitysohjelman tunnistaman osan lokiviestistä, Tällä tavoin käyttäjä tietää, että lokiviesti voidaan jäsentää oikein.

  2. Kun käyttäjä selaa lokiviestejä, TortoiseSVN luo kullekin lokiviestin virhetunnukselle linkin, joka avaa selaimen näyttämään viitattua ongelmaa.

Vikanumeroiden lisääminen lokiviesteihin

Voit integroida haluamasi vikaseurantatyökalun TortoiseSVN:ään. Tehdäksesi tämän sinun on määriteltävä muutamia ominaisuuksia, jotka kaikki alkavat etuliitteellä bugtraq:. Ne on asetettava kansioille: (”Projektiasetukset”)

Kuva 4.70. Bugtraq-ominaisuusikkuna

Bugtraq-ominaisuusikkuna


Kun muokkaat bugtraq-ominaisuuksia, käytössä on erikoiseditori, jotta sopivien arvojen asetus olisi helpompaa.

On kaksi tapaa integroida TortoiseSVN virheenjäljitysohjelmiin. Toinen perustuu yksinkertaisiin merkkijonoihin, toinen taas säännöllisiin lausekkeisiin. Molemmat tavat jakavat seuraavat asetukset:

bugtraq:url

Aseta tämä ominaisuus vikaseurantaohjelmasi paikantimeen. Sen on oltava oikein URI-koodattu ja sisällettävä symboli %BUGID%. %BUGID% korvataan syöttämälläsi vikatunnuksella. Tämän tiedon avulla TortoiseSVN osaa näyttää linkin loki-ikkunassa, joten voit hypätä suoraan versiolokista vikaseurantaohjelmaasi. Ominaisuutta ei ole pakko määritellä, mutta silloin TortoiseSVN näyttää vain vikatunnuksen eikä linkkiä siihen. Esim. TortoiseSVN-projekti käyttää asetusta http://issues.tortoisesvn.net/?do=details&id=%BUGID%

Voit myös käyttää suhteellisia paikantimia absoluuttisten sijaan. Tämä on hyödyllistä, jos vikaseurantaohjelmasi on samassa toimialueessa tai palvelimella kuin arkistosi. Jos palvelimesi nimialue joskus muuttuu, et joudu muuttamaan bugtraq:url -ominaisuutta. On kaksi tapaa määritellä suhteellinen paikannin:

Jos se alkaa merkkijonolla ^/, sen oletetaan olevan suhteellinen arkiston juureen nähden. Esimerkiksi ^/../?do=details&id=%BUGID% laventuu muotoon http://tortoisesvn.net/?do=details&id=%BUGID% mikäli arkistosi sijaitsee paikantimessa http://tortoisesvn.net/svn/trunk/.

Merkkijonolla / alkavan paikantimen oletetaan olevan suhteellinen palvelimen nimeen nähden. Esimerkiksi /?do=details&id=%BUGID% laventuu muotoon http://tortoisesvn.net/?do=details&id=%BUGID% mikäli arkistosi sijaitsee missään palvelimella http://tortoisesvn.net.

bugtraq:warnifnoissue

Aseta tämä arvoon true, jos haluat että TortoiseSVN varoittaa tyhjästä vikatunnuskentästä. Sallitut arvot ovat true/false. Oletusarvoisesti asetus on false.

Vikanumero tekstikentässä

Yksinkertaisessa tavassa TortoiseSVN näyttää käyttäjälle erillisen syöttökentän, johon vikatunnus voidaan syöttää. Lopuksi erillinen rivi lisätään syötetyn lokiviestin loppuun/alkuun.

bugtraq:message

Tämä ominaisuus aktivoi vikaseurannan Syöttökenttätilaan. Jos ominaisuus on päällä, TortoiseSVN pyytää sinua syöttämään vikatunnuksen, kun toimitat muutoksesi arkistoon. Sitä käytetään lisäämään rivi lokiviestin loppuun. Ominaisuuden on sisällettävä termi %BUGID%, joka korvataan toimitettaessa vikatunnuksella. Tämä takaa, että lokiviestissäsi on aina oikean muotoinen viite, jonka vikaseurantatyökalusi voi jäsentää vikatunnuksen kytkemiseksi arkistotoimitukseen. Voit esimerkiksi käyttää asetusta Issue : %BUGID%, mutta tarkka muoto riippuu käyttämästäsi työkalusta.

bugtraq:label

TortoiseSVN näyttää tämän tekstin toimitusikkunassa vikatunnuskentän edessä. Oletusarvoisesti ominaisuuden arvo on Vikatunnus:. Huomaa kuitenkin, että ikkunan kokoa ei muuteta merkkijonon mahduttamiseksi, joten pidä sen pituus korkeintaan 20-25 merkissä.

bugtraq:number

Arvo true sallii vain numerot virhenumeron syöttökentässä. Pilkkumerkki sallitaan aina, jotta voit syöttää useita numeroita. Sallitut arvot ovat true/false. Oletusarvoisesti ominaisuuden tila on true.

bugtraq:append

Tämä ominaisuus määrittää, lisätäänkö vikatunnus lokiviestin loppuun (true) vai alkuun (false). Sallitut arvot ovat true/false. Oletusarvoisesti arvo on true, jotta olemassa olevat projektit eivät rikkoudu.

Vikanumerot säännöllisten lausekkeiden avulla

Säännölliset lausekkeet -tilassa TortoiseSVN ei näytä erillistä syöttökenttää, vaan ottaa talteen sen osan lokiviestistä, joka täsmää määritettyjen säännöllisten lausekkeiden kanssa. Tämä tehdään lokiviestin kirjoittamisen aikana. Vikatunnus voi siis olla missä tahansa osassa lokiviestiä! Menetelmä on varsin joustava, ja esim. TortoiseSVN-projekti itse käyttää sitä.

bugtraq:logregex

Tämä ominaisuus asettaa vikaseurannan Säännölliset lausekkeet -tilaan. Se sisältää yksi tai kaksi rivinvaihdolla erotettua säännöllistä lauseketta.

Jos kaksi lauseketta on annettu, ensimmäistä käytetään esisuodattimena löytämään lausekkeet, joissa on vikatunnuksia. Seuraava lauseke erottelee sitten pelkät vikatunnukset ensimmäisen lausekkeen tuloksista. Tämä sallii luonnollisen kielen ja vikatunnusten yhdistelmän; saatat esimerkiksi korjata useita vikoja ja raportoida ne seuraavasti: Tämä muutos korjaa viat #23, #24 ja #25.

Jos haluat täsmätä yllä olevan lausekkeen vikatunnukset lokiviestistä, voit käyttää seuraavia säännöllisiä lausekkeita: [Vv]ikatunnu(s|kset):?(\s*(,|ja)?\s*#\d+)+ sekä (\d+).

Ensimmäinen lauseke erottelee vikatunnukset #23, #24 ja #25 ympäröivästä lokiviestistä. Toinen säännöllinen lauseke erottaa pelkät numerot ensimmäisen lausekkeen tuloksesta, joten se palauttaa vikatunnukset 23, 24 ja 25.

Jos ensimmäinen lauseke jaetaan osiin, havaitaan, että sen on alettava sanalla vikatunnu, alkaen mahdollisesti isolla kirjaimella. Tätä seuraa joko s tai kset (useita vikoja) sekä mahdollinen kaksoispiste. Tätä seuraa yksi tai useampia ryhmiä, jotka muodostuvat tyhjämerkeistä (nolla tai useampia), vikatunnuksesta, pilkusta tai sanasta ja sekä vielä tyhjämerkeistä (nolla tai useampia). Vikatunnus muodostuu pakollisesta #-merkistä ja numerosta.

Jos vain yksi lauseke on annettu, lausekkeen ryhmien on täsmättävä pelkkien virhetunnusten kanssa. Esimerkki: [Vv]ikatunnus:? #?(\d+) Muutamat työkalut (esim. trac) vaativat tämän tavan käyttöä, mutta säännöllisen lausekkeen muodostaminen on vaikeampaa. Suosittelemme, että käytät tätät tapaa vain jos työkalusi vaatii sitä.

Jos et ole perehtynyt säännöllisiin lausekkeisiin, katso johdanto osoitteesta https://en.wikipedia.org/wiki/Regular_expression, sekä muita dokumentteja osoitteesta http://www.regular-expressions.info/.

Ei ole aina helppoa saada säännöllistä lauseketta oikein. Tämäm helpottamiseksi käytössä on testi-ikkuna, joka on rakennettu bugtraq-ominuuseditorin yhteyteen. Napsauta oikealla olevaa painiketta käynnistääksesi sen. Ikkunassa voit lisätä tekstiä ja muuttaa kutakin lauseketta nähdäksesi tulokset. Jos lauseke on väärä, sen editointitausta muuttuu punaiseksi.

Jos molemmat ominaisuudet bugtraq:message ja bugtraq:logregex on asetettu, logregex vie voiton.

Vihje

Vaikka et käyttäisi virheenjäljitysohjelmaa ja toimintokomentoja lokiviestiesi jäsentämiseen, voit silti käyttää tätä muuttaaksesi lokiviestiesi osia linkeiksi!

Ja vaikket tarvitsisikaan linkkejä, vikanumerot näytetään loki-ikkunassa erillisessä sarakkeessa, jolloin tiettyyn vikaan liittyvät muutokset on helpompi löytää.

Jotkut tsvn:-ominaisuudet tarvitsevat arvon true/false. Tällöin sanaa yes voidaan käyttää synonyyminä arvolle true ja sanaa no synonyyminä arvolle false.

Aseta ominaisuudet kansioille

Nämä ominaisuudet on asetettava kansioille, jotta ne toimisivat. Kun toimitat tiedoston tai kansion, ominaisuudet luetaan kansiosta. Jos niitä ei löydy sieltä, TortoiseSVN etsii ylöspäin kansiopuussa kunnes vastaan tulee versioimaton kansio tai työkopion juurikansio (esim. C:\). Jos voit olla varma, että kukin käyttäjä hakee työkopion esim. vain päähaarasta eikä jostain sen alikansiosta, riittää asettaa ominaisuudet päähaarakansiolle (trunk/). Jos et voi olla varma tästä, ominaisuudet kannattaa asettaa palautuvasti kaikille alikansioille. Syvemmällä projektihierarkiassa oleva ominaisuus vie voiton ylemmillä tasoilla (lähempänä kansiota trunk/) olevista.

Versiosta 1.8 alkaen TortoiseSVN ja Subversion käyttävät perittyjä ominaisuuksia, jotka periytyvät automaattisesti kansiosta sen alikansioihin. Ei ole siis enää tarpeen asettaa ominaisuuksia kaikille kansioille, juurikansio riittää.

Projektiominaisuuksien yhteydessä (ts. i.e. tsvn:, bugtraq: ja webviewer:) valinta Sovella palautuvasti asettaa ominaisuuden kaikille kansiopuun alikansioille (muttei tiedostoille).

Kun lisäät työkopioon uusia alikansioita, TortoiseSVN lisää yläkansion projektiominaisuudet niihin automaattisesti.

Vikaseurantatiedot eivät ole käytettävissä arkistoselaimessa

Koska kytkentä web-selaimiin vaatii Subversion-ominaisuuksien käyttöä, näet tulokset vain työkopion kautta. Ominaisuuksien haku palvelimelta on hidasta, joten tämä toiminto ei ole käytettävissä arkistoselaimessa, ellet käynnistä arkistoselainta työkopiostasi. Jos siis käynnistät arkistoselaimen antamalla arkiston paikantimen, tämä ominaisuus ei ole käytettävissä.

Samasta syystä projektiominaisuudet eivät leviä automaattisesti, kun alikansio lisätään arkistoselaimen kautta.

Vikaseurantaa voi käyttää TortoiseSVN:n ohella kaikkien Subversion-pohjaistan ohjelmien kanssa. Katso lisätietoja TortoiseSVN-arkistosta osoitteessa Issue Tracker Integration Specification (”Lisenssi” kertoo, miten arkistoon kytkeydytään.)

Tiedon saanti vikaseurantaohjelmasta

Edellinen luku käsitteli vikatietojen lisäämistä lokiviesteihin. Entäpä jos tarvitset tietoja vikaseurantaohjelmasta? Toimitusikkunalla on COM-rajapinta, johon voidaan kytkeä ulkoinen ohjelma, joka keskustelee vikaseurantaohjelmasi kanssa. Saatat esimerkiksi haluta luettelon korjattavaksesi määrätyistä vioista, jotta voit poimia ne, joihin käsillä oleva toimitus liittyy.

Tällainen rajapinta on tietysti tiukasti sidoksissa käyttämääsi vikaseurantajärjestelmään, eikä sitä toimitetan TortoiseSVN:n mukana. Rajapinnan määritys sekä C#/C++ -esimerkkiohjelmia löytyy TortoiseSVN -arkiston contrib -hakemistosta (”Lisenssi” kertoo, miten arkistoon kytkeydytään). Rajapinnan API-yhteenveto löytyy myös osoitteesta Luku 7, IBugtraqProvider-rajapinta. Gurtle on (toimiva) C#-kielellä toteutettu ohjelma, joka toteuttaa Google Code -vikaseurannan vaatiman COM-rajapinnan.

Oletetaan esimerkin vuoksi, että järjestelmänvalvojasi on toimittanut lisäosan vikaseurantaan kytkeytymistä varten. Olet asentanut ohjelman ja kytkenyt työkopiosi käyttämään sitä TortoiseSVN-asetusten kautta. Kun avaat tästä työkopiosta toimitusikkunan, näet uuden painikkeen ikkunan oikeassa ylänurkassa.

Kuva 4.71. Esimerkki vikaseurantaohjelman kyselyikkunasta

Esimerkki vikaseurantaohjelman kyselyikkunasta


Tässä esimerkissä voit valita yhden tai useampia vikoja. Ohjelma voi sitten lisätä muotoillun tekstin lokiviestiisi.