Алати за преглед кода

Аутор: Никола Јанковић

Прегледање кода (енг. code review) jе процес у којем тим програмера заједничким читањем кода покушава да уочи могуће пропусте настале у току процеса развоја софтвера. У највећем броју случајева, преглед кода се организује пре него што новоизмењен код буде послат на заједничко спремиште (енг. repository).

Систем за контролу верзија је корак ка софтверској формализацији прегледа кôда преко рамена. У овом тексту ће више пажње бити посвећено другим софтверским приступима за аутоматизацију различитих делова прегледа кôда, то су управо алати за преглед кода.

Велики број процеса обухваћених прегледом кôда може да се аутоматизује, а софтвери који решавају овакве проблеме могу да се поделе у две категорије – отвореног кôда и власнички. У овом чланку разматрамо искључиво алате за прегледање кода који су отвореног кода.

РевјуБорд

Пројекат РевјуБорд (енг. ReviewBoard) су започела два програмера, Кристејн Хемонд (енг. Christain Hammond) i Давид Троубриџ (енг. David Trowbridge), компаније VMware. Они су добили задатак да унапреде дотадашњи механизам прегледања кôда у тимовима те компаније. Пројекат се сводио на генерисање ХТМЛ кôда који је приказивао стару и нову верзију кôда и маркирао делове који се разликују. Чланови тима су имали могућност да додају и објашњења зашто су правили те измене и које су све тестове спровели над новом верзијом кôда. Након тога се слао захтев потенцијалним прегледачима. Све то је одузимало превише времена, дешавало се и да неки захтеви бивају загубљени услед комплексности и захтевности самог система. Зато је било неопходно унапредити цео систем.

Изворни кôд овог алата написан је у језику Пајтон уз помоћ радног оквира Ђанго. Овај алат је под МИТ лиценцом, а процес рада приказан на слици не разликује се битно ни код осталих алата који ће бити представљени у наставку.

Герит

Герит алат за прегледање кода (енг. Gerrit Code Review) је започет као скуп додатних могућности на већ раније развијен пројекат под називом Ритвелд (енг. Rietveld) и првобитна сврха му је била да служи пројекту АОСП (енг. Android Open Source Project). Касније је постао засебан пројекат са новим, значајнијим могућностима које је аутор система Ритвелд, Гвидо ван Росум (хол. Guido van Rossum, аутор програмског језика Пајтон) одбијао да дода у оригинални пројекат како би задржао једноставност. У том моменту је почела и значајна промена самог кôда па је био потребан нови назив. Одабрано је име Герит, у част холандског архитекте Герита Ритвелда. Верзија софтвера Герит под ознаком 2.X је била значајна јер је изворни кôд написан у програмском језику Пајтон реимплементиран уз помоћ програмског језика Јава. Овај софтвер је лиценциран под Апачи лиценцом, али постоје и власничке верзије софтвера.

КôдСтрајкер

КôдСтрајкер (енг. Codestriker) је веб апликација која подржава онлајн прегледе кôда. Могуће је то учинити на традиционалан начин, прегледом документације, али такође је подржан и преглед промена генерисаних помоћу СЦМ (енг. Source Code Management) система. Прва верзија овог софтвера је настала у децембру 2001. године и објављена је на SourceForge. платформи. Првобитно, био је имплементиран као ад-хок решење у виду мањег скрипт програма написаног у програмском језику Перл. Све могућности би се могле свести у једну реченицу: „Проследи свим потенцијалним прегледачима на мејл адресу излаз команде из програма који служи као посредник у систему за контролу верзија CVS и омогући прегледачима да могу да остављају коментаре”.

Последње верзије овог софтвера омогућавају и даље овакав мање формалан (енг. light-weight) метод прегледа кôда, али подржава и потпуно формалан приступ. За разлику од пројекта Герит, овај пројекат је у свим својим верзијама под лиценцом која спада у групу оних које заступају концепт софтвера отвореног кôда, тачније ГПЛ.

Фабрикатор

Фабрикатор (енг. Phabricator) није једна, већ скуп више веб апликација које олакшавају развој софтвера, највише рад у тиму. Имплементација је највећим делом базирана на интерним алатима компаније Фејсбук.

Главне компоненте система Фабрикатор су:

  • Диференцијал (енг. Differential)
  • Дифузија (енг. Diffusion)
  • Манифест (енг. Maniphest)
  • Арканист (енг. Arcanist)

Диференцијал је компонента која обавља главни део посла који се разматра у овом чланку. Има сличан ток рада као РевјуБорд, што је приказано на графу раније. Разлика је само што цео процес не обавља самостално као РевјуБорд, већ користи и алат Арканист помоћу ког се из терминала (енг. command-line) генеришу diff датотеке. Дифузија омогућава преглед репозиторијума, што имплицитно омогућава преглед кôда након што измена буде потврђена на глобалном репозиторијуму (енг. post-push review). Манифест је компонента која служи за праћање грешака (енг. bug tracker).

Разлог широке употребе алата за преглед кôда је потреба производних менаџера (енг. product managers) да подстакну чланове тима да буду ажурни и педантни при прегледању. Алати могу да обезбеде тимовима мање ригорозну контролу прегледа, али и строже механизме контроле, у виду сервера за праћење прегледа кôда (енг. verision control server).