25. dubna 2012

Crucible - nástroj na code review

Crucible je další z nástrojů od Atlassianu (kromě již známých nástrojů JIRA a Confluence).  Crucible je nástroj na code review. Umožňuje prohlížení zdrojových kódů a vytváření jeho review včetně workflow kolem. Crucible slouží jako komunikační kanál mezi vývojáři nad zdrojovým kódem - vše na jednom místě, vše sledovatelné a dohledatelné.

Přínos efektivního code review je zřejmý, ale často je problém, jak vlastně code review dělat, aby bylo opravdu efektivní. Efektivní code review musí z mého pohledu splňovat tyto podmínky:

  • šíření informací všem členům týmu
  • vše zpětně dohledatelné
  • minimální časová náročnost resp. čím méně času, tím lépe
  • nesmí nabourávat vztahy v týmu (není vždy jednoduché být kritický a nikoho se tím osobně nedotknout)
Když jsme s code review začínali,  tak to vypadalo přibližně tak, že jsme se každý týden na půl hodiny až hodinu potkali osobně, kde jsme procházeli části kódu, upozorňovali na časté nedostatky nebo informovali se o změnách v našich interních API. Toto nejčastěji prováděl team leader. Tento přístup má řadu nevýhod:
  • každý nemůže vždy přijít na osobní setkání, takže se k němu dané informace nedostanou (je pravda, že důležité věci, případně nějaká rozhodnutí jsme zapisovali do interní wiki, ale i tak spoustu informací ze samotného code review nikde zaznamenána nebyla)
  • chybí jedno místo, kde lze informace z code review hledat. Něco se řekne na schůzce, něco se pošle mailem a pak je problém se k některým tématům vracet, dohledávat je
  • samotná kontrola zdrojového kódu probíhá ručně, často náhodným výběrem několika tříd. Chybí nástroj, který vás v tomto podpoří, přidá do toho trochu nějaký systém.
  • vždy bylo nutné mít zdrojový kód v repository, aby si ho někdo další mohl prohlížet
Kvůli těmto nedostatkům jsme začali hledat vhodný nástroj a Crucible nám je pomohlo odstranit.  Crucible nabízí integraci s dalšími svými sourozenci, zejména s JIROU - není tedy problém vytvořit nové review přímo z JIRY k souborům napojených k danému tásků. I na podporu v IDE se nezapomnělo - mohu přímo v IDE vybrat soubory a vytvořit k nim nové review v Crucible (podpora je zatím jen pro IDEU, pro Eclipse zatím chybí). 

Máme teď tedy v týmu nástroj, který umožňuje komukoliv a kdykoliv založit požadavek na review vybrané části kódu a tím získat zpětnou vazbu. Když si člověk uvědomí, že žádné API není hned v první verzi dokonalé, že je potřeba získávat zpětnou vazbu na svoje návrhy a svoji práci, tak máme nástroj, který nám s tím dokáže pomoci.

Standardně součástí Crucible je i FishEye, což je taková hodně komfortní prohlížečka zdrojových kódů v repositářích. Za FishEye je ale nutné platit nemalé peníze navíc, tak zatím používáme samotné Crucible - chybí několik zajímavých pohledů do repositářů, ale z pohledu samotných review se nic nezměnilo.

1 komentář:

Guido řekl(a)...

My jsme dřív používali Maven site a v rámci projektu jsme měli nakonfigurovaný pravidla pro PMD, Findbugs a Checkstyle. Problém se site je, že je to takový roztříštěný a musí se hodně klikat.

Na několika posledních projektech jsme přešli na Sonar a jsme maximálně spokojený.

Hlavní problém, je prodat myšlenku code review týmu. Projekťák (alespoň u nás) je s tím v pohodě, někdy to dokonce vyžaduje.