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”)

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ä %BUGID%. %BUGID% korvataan vikatunnuksella, jonka syötit. Tämän tiedon avulla TortoiseSVN osaa näyttää linkin loki-ikkunassa, joten kun katsot versiolokia, voit hypätä suoraan 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: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.

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.

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 vikatunnukset #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 http://en.wikipedia.org/wiki/Regular_expression, sekä muita dokumentteja osoitteesta http://www.regular-expressions.info/.

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.

Ainoastaan etuliitteellä tsvn: alkaville ominaisuuksille voi käyttää valintaa Palautuva asettamaan ominaisuuden kaikille alikansioille asettamatta sitä samalla kaikille tiedostoille.

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

Koska kytkentä vikaseurantaohjelmiin 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.

Virheenjäljitysintegraatio ei ole TortoiseSVN-riippuvaista; sitä voi käyttää minkä tahansa Subversion-asiakkaan kanssa. Katso kaikki yksityiskohdat dokumentista Issue Tracker Integration Specification. (Kappale ”TortoiseSVN on ilmainen!” kertoo, miten TortoiseSVN-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 hyvin järjestelmäkohtainen, joten emme voi toimittaa sitä. Integrointiohjelman tekoa ei myöskään kuvata tässä dokumentissa. Rajapintamääritys ja joukko C#- ja C++/ATL -kielisiä esimerkkilisäosia löytyy TortoiseSVN-arkistosta. (Kappale ”TortoiseSVN on ilmainen!” kertoo, miten arkistoon kytkeydytään). Rajapinnan yhteenveto on kuvattu myös luvussa Luku 6, IBugtraqProvider-rajapinta. Vielä eräs (toimiva) C# -esimerkkiohjelma on Gurtle, joka toteuttaa COM-rajapinnan Google Code -vikaseurantaan.

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.50. Esimerkki vikaseurantaohjelman kyselyikkunasta

Esimerkki vikaseurantaohjelman kyselyikkunasta


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