Kodgranskning är en del av mjukvaruutvecklingsprocessen som innebär att testa källkoden för att identifiera buggar i ett tidigt skede. En kodgranskningsprocess utförs vanligtvis innan den slås samman med kodbasen.
En effektiv kodgranskning förhindrar buggar och fel från att komma in i ditt projekt genom att förbättra kodkvaliteten i ett tidigt skede av mjukvaruutvecklingsprocessen.
I det här inlägget förklarar vi vad kodgranskning innebär och utforskar populära kodgranskningsverktyg som hjälper till med kodgranskningsprocessen.
Vad innebär en kodgranskningsprocess?
Det primära målet med kodgranskningsprocessen är att göra en bedömning av ny kod för att hitta buggar, fel och hålla de kvalitetsstandarder som fastställts av organisationen. Kodgranskningsprocessen bör inte bara bestå av ensidig feedback. En stor fördel med kodgranskningsprocessen är därmed teamets kollektiva förbättrade kodningsförmåga.
Om du vill skapa en kodgranskningsprocess för din organisation bör du först bestämma vem som ska granska koden. Om du tillhör ett litet team kan du låta teamledarna granska all kod. I ett större team med flera granskare kan du aktivera en process där varje kodgranskningsuppgift tilldelas en erfaren utvecklare baserat på deras arbetsbelastning.
Nästa sak att överväga är tidslinjer, rundor och minimikrav för att skicka in kodgranskningsförfrågningar.
Det slutliga övervägandet handlar om hur feedback ska lämnas i kodgranskningsprocessen. Se till att du markerar de positiva aspekterna av koden samtidigt som du föreslår alternativ för nackdelar.
Din feedback bör vara konstruktiv nog att uppmuntra utvecklaren att förstå ditt perspektiv och inleda en konversation när det behövs.
Det är lätt för kodgranskning att fastna i limbo, vilket gör den mindre effektiv och till och med kontraproduktiv.
Varför är kodgranskning så viktigt?
Kodgranskningsprocessen är så livsviktig eftersom den aldrig ingår i den formella läroplanen i skolorna. Du kan lära dig nyanserna i ett programmeringsspråk och projekthantering, men kodgranskning är en process som utvecklas allteftersom en organisation åldras.
Kodgranskning är viktigt av följande skäl:
- Se till att du inte har några fel i koden.
- Minimera dina risker att få problem.
- Bekräfta att ny kod följer riktlinjerna.
- Öka effektiviteten i ny kod.
Kodgranskning leder dessutom till att förbättra andra teammedlemmars expertis. Erfarna utvecklare utför vanligtvis en kodgranskning, och en mer oerfaren utvecklare kan använda deras feedback för att förbättra sin egen kodning.
Hur utför man en kodgranskning?
Det finns fyra sätt att genomföra kodgranskningar.
Titta-över-axeln-granskning
Titta-över-axeln-kodgranskning görs på utvecklarens arbetsstation, där en erfaren teammedlem går igenom den nya koden och ger förslag via konversation. Det är det enklaste sättet att genomföra kodgranskning och kräver ingen fördefinierad struktur.
En sådan kodgranskning kanske fortfarande utförs informellt idag, tillsammans med en mer formell kodgranskningsprocess. Titta-över-axeln-kodgranskningar gjordes traditionellt personligen, medan distribuerade team kan följa denna metod genom samarbetsverktyg också.
E-post
Medan ovan kodgranskningsmetod är ett bra sätt att granska ny kod, har geografiskt distribuerade team traditionellt förlitat sig på e-post för att utföra kodgranskning.
I den här kodgranskningsprocessen skickar en utvecklare en diff med ändringar till hela utvecklingsteamet, vanligtvis genom versionskontrollsystem som automatiserar aviseringar. Det här mejlet initierar en konversation om ändringarna, där teammedlemmar kan begära ytterligare ändringar, påpeka fel eller begära förtydliganden.
I början var e-post det primära kommunikationsmedlet på grund av dess mångsidighet. Öppen källkods-organisationer upprätthöll ofta en offentlig e-postlista, som också fungerade som ett medium för att diskutera och ge feedback på kod.
Med tillkomsten av kodgranskningsverktyg används dessa listor främst för meddelanden och vidare diskussion.
Parprogrammering
Parprogrammering är en kontinuerlig kodgranskningsprocess. Två utvecklare sitter på en arbetsstation, men bara en av dem kodar aktivt medan den andra ger feedback i realtid.
Även om det kan fungera som ett bra verktyg för att inspektera ny kod och träna upp utvecklare kan det potentiellt visa sig vara ineffektivt på grund av hur tidskrävande det är. Denna process hindrar granskaren från att göra något annat produktivt arbete under perioden.
Verktygsbaserad
En verktygsbaserad kodgranskningsprocess innebär att använda ett specialiserat verktyg för att underlätta kodgranskningsprocessen. Ett verktyg hjälper dig i allmänhet med följande uppgifter:
- Organisera och visa de uppdaterade filerna i en förändring.
- Underlätta kommunikationen mellan granskare och utvecklare.
- Bedöma effekten av kodgranskningsprocessen med olika mätvärden.
Även om dessa är de breda kraven i ett kodgranskningsverktyg, kan moderna verktyg erbjuda en handfull andra funktioner. Vi kommer att utforska en rad kodgranskningsverktyg senare i det här inlägget.
Varför borde du använda kodgranskningsverktyg?
Det viktigaste resultatet av en kodgranskningsprocess är att öka effektiviteten. Medan traditionella metoder för kodgranskning har fungerat tidigare, kan du förlora effektivitet om du inte har bytt till ett kodgranskningsverktyg. Ett kodgranskningsverktyg automatiserar processen så att en granskare enbart fokuserar på koden.
Det integreras med din utvecklingscykel för att initiera en kodgranskning innan ny kod slås samman med huvudkodbasen. Du kan välja ett verktyg som är kompatibelt med din teknikstack för att sömlöst integrera det i ditt arbetsflöde.
Till exempel, om du använder Git för kodhantering, och TravisCI för kontinuerlig integration, se till att du väljer ett verktyg som stöder dessa tekniker för att kunna passa in i utvecklingsprocessen.
Det finns två typer av kodtestning inom mjukvaruutveckling: dynamisk och statisk.
Dynamisk analys innebär att kontrollera om koden följer en uppsättning regler och att köra enhetstester, och utförs vanligtvis av ett fördefinierat skript. Statisk kodtestning görs efter att en utvecklare skapat en ny kod som ska slås samman med den aktuella koden.
Låt oss nu dyka in i några av de mest populära kodgranskningsverktygen!
En närmare titt på 12 kraftfulla kodgranskningsverktyg
I det här avsnittet granskar vi de mest populära statiska kodgranskningsverktygen.
1. Review Board
Review Board är ett webbaserat, öppen källkod-verktyg för kodgranskning. För att testa detta kodgranskningsverktyg, kan du antingen utforska demon på deras hemsida eller ladda ner och installera programvaran på din server.
Programmeringsspråket Python och dess installatörer, MySQL eller PostgreSQL som en databas, och en webbserver, är förutsättningarna för att köra Review Board på en server.
Du kan integrera Review Board med ett brett utbud av versionskontrollsystem – Git, Mercurial, CVS, Subversion och Perforce. Du kan också länka Review Board till Amazon S3 för att lagra skärmdumpar direkt i verktyget.
Review Board låter dig utföra kodgranskning både pre-commit och post-commit beroende på dina behov. Om du inte har integrerat ett versionshanteringssystem kan du använda en diff-fil för att ladda upp kodändringar till verktyget för en granskning.
En grafisk jämförelse av ändringar i din kod tillhandahålls också. Förutom kodgranskning kan Review Board också låta dig genomföra dokumentgranskning.
Den första versionen av Review Board kom ut för över ett decennium sedan, men det utvecklas fortfarande aktivt. Därför har communityt for Review Board vuxit under åren och du kommer sannolikt att hitta gott om hjälp om du får några problem med verktyget.
Review Board är ett enkelt verktyg för kodgranskning som du kan hosta på din server. Du bör ge det en chans om du inte vill hosta din kod på en offentlig webbplats.
2. Crucible
Crucible är samarbetsbaserat verktyg från Atlassian. Det är en kommersiell svit verktyg som låter dig granska kod, diskutera planförändringar och identifiera fel i en mängd versionskontrollsystem.
Crucible tillhandahåller två betalningsplaner, en för små team och det andra för företag. För ett litet team måste du göra en engångsbetalning på $10 för obegränsade arkiv begränsade till fem användare. För stora team börjar priset på $1100 för tio användare och obegränsade arkiv.
Båda dessa planer erbjuder en 30-dagars gratis testperiod utan att behöva lämna ut kreditkortsinformation.
I likhet med Review Board stöder Crucible ett stort antal versionskontrollsystem – SVN, Git, Mercurial, CVS och Perforce. Dess primära funktion är att göra det möjligt för dig att genomföra kodgranskning. Förutom övergripande kommentarer på koden kan du kommentera inline i diff-vyn för att ange exakt vad du hänvisar till.
Crucible integreras väl med Atlassians andra företagsprodukter som Confluence och Enterprise BitBucket. Men du kommer eventuellt att få mest nytta av Crucible genom att använda det tillsammans med Jira, Atlassians problem- och projekttracker. Det låter dig utföra pre-commitgranskningar och revisioner på sammanslagen koden.
3. GitHub
Om du använder GitHub för att underhålla dina Git-arkiv på molnet, kanske du redan använt forkar och dra-förfrågningar för att granska kod. Om du inte har någon aning om vad GitHub är, har vi en nybörjarguide till GitHub här, och skillnaderna mellan Git och GitHub.
GitHub har ett inbyggt kodgranskningsverktyg i sina dra-förfrågningar. Kodgranskningsverktyget medföljer GitHubs kärntjänst, som ger en gratisplan för utvecklare. GitHubs gratisplan begränsar antalet användare till tre i privata arkiv. Betalda planer kostar från $7 per månad.
GitHub tillåter en granskare med tillgång till kodarkivet att tilldela sig själv en dra-förfrågan och genomföra en granskning. En utvecklare som har lämnat in en dra-förfrågan kan också begära en granskning från en administratör.
Förutom diskussionen om den övergripande dra-förfrågningen kan du analysera diffen, kommentera inline och kontrollera ändringshistoriken. Med kodgranskningsverktyget kan du också lösa enkla Git-konflikter via webbgränssnittet. GitHub låter dig också integrera med ytterligare granskningsverktyg genom sin marknadsplats för att skapa en mer härdad process.
GitHubs kodgranskningsverktyg är ett bra verktyg om du redan använder den plattformen. Det kräver ingen ytterligare installation eller konfiguration. Det primära problemet med GitHubs kodgranskningsverktyg är att det endast stöder Git-arkiv som hostas på GitHub. Om du letar efter ett liknande kodgranskningsverktyg som du kan ladda ner och hosta på din server, kan du prova GitLab.
4. Axolo
Axolo är inte vad du förväntar dig när du läser ”kodgranskningsverktyg”. Du föreställer dig förmodligen en skärm full av diff. Inte alls! Axolo handlar om kommunikation. Närmare bestämt så tar Axolo alla vanliga diskussioner på GitHub eller GitLab och för in den i Slack.
Detta görs genom att det skapas en tillfällig Slack-kanal för varje kodgranskning. De bjuder bara in de personer som borde vara där (kodförfattaren, tilldelade personer och granskare), skickar endast de nödvändiga aviseringarna i kanalen (kodkommentarer, CI/CD, . ..), och arkiverar kanalen när grenen har slagits samman.
Med dagliga påminnelser, aviseringar om pull-begäranden, sammanfattningar för stand-ups och dedikerade tidsluckor för kodgranskning kan ingenjörsteam sömlöst granska koden utan några inaktuella pull-begäranden.
5. Collaborator
Collaborator by SmartBear är ett verktyg för kod- och dokumentgranskning för utvecklingsteam. Förutom källkodsgranskning kan Collaborator också låta team granska designdokument. Ett 5-användarlicenspaket kostar $535 per år. En gratis testversion är tillgänglig beroende på dina företagsbehov.
Collaborator stöder ett stort antal versionskontrollsystem som Subversion, Git, CVS, Mercurial, Perforce och TFS. Det gör ett bra jobb med att integrera med populära projektledningsverktyg och IDEs som Jira, Eclipse och Visual Studio.
Detta verktyg möjliggör också rapportering och analys av viktiga mätvärden relaterade till din kodgranskningsprocess. Dessutom hjälper Collaborator med revisionshantering och felsökning. Om din teknikstack involverar olika företagsprogram och du behöver support för att konfigurera din kodgranskningsprocess, bör du testa Collaborator.
6. CodeScene
CodeScene är ett kodgranskningsverktyg som ger dig mer än traditionell statisk kodanalys. Det utför beteendebaserad kodanalys genom att inkludera en tidsmässig dimension för att analysera utvecklingen av din kodbas. CodeScene finns i två former: en molnbaserad lösning och en lokal lösning.
Codescenes molnbaserade planer är gratis för offentliga arkiv som hostas på GitHub. För upp till tio privata arkiv och ett team av tio medlemmar kostar CodeScene €99 per månad. En lokal installation av CodeScene kostar €15 per utvecklare och månad.
CodeScene bearbetar din versionskontrollshistorik för att tillhandahålla kodvisualiseringar. Utöver detta applicerar det maskininlärningsalgoritmer för att identifiera sociala mönster och dolda risker i koden.
Genom versionskontrollshistoriken profilerar CodeScene alla teammedlemmar för att kartlägga deras kunskapsbas och skapa interna beroenden för teamet. Det introducerar också begreppet hotspots i ditt arkiv genom att identifiera filer som har mest utvecklingsaktivitet. Dessa hotspots kräver högsta uppmärksamhet framåt.
Om du letar efter ett verktyg som går utöver ett traditionellt, kommunikativt kodgranskningsverktyg, se till att kolla in CodeScenes gratis provperiod. För att lära dig mer om den underliggande logiken bakom Codescenes beteendebaserade kodanalys, kolla in denna vitbok om Codescenes användningsfall och roller.
7. Visual Expert
Visual Expert är en företagslösning för kodgranskning som specialiserat sig på databaskod. Den har bara stöd för tre plattformar: PowerBuilder, SQL Server och Oracle PL/SQL. Om du använder ett annat DBMS kommer du inte att kunna integrera Visual Expert för kodgranskning.
En gratis provversion är tillgänglig, men du måste skicka en begäran om att få en offert.
Förutom en traditionell kodgranskning analyserar Visual Expert varje förändring i din kod för att förutse eventuella prestandaproblem på grund av ändringarna. Verktyget kan automatiskt generera fullständig dokumentation av din applikation från koden också.
Om du använder PowerBuilder, SQL Server eller Oracle PL/SQL och skulle vilja ha ett specialiserat kodgranskningsverktyg som passar dina behov bör du prova Visual Expert (här är en guide till att bygga effektiva WordPress-förfrågningar).
8. Gerrit
Gerrit är ett gratis och webbaserat kodgranskningsverktyg med öppen källkod för Git-arkiv, skrivet i Java. För att köra Gerrit måste du ladda ner källkoden och köra den i Java. Här är installationsprocessen för en fristående version av Gerrit.
Gerrit kombinerar funktionaliteten hos en feltracker och ett granskningsverktyg till ett. Under en granskning visas ändringarna sida vid sida i en enhetlig diff, med möjlighet att initiera en konversation för varje rad kod som läggs till. Detta verktyg fungerar som ett mellansteg mellan en utvecklare och det centrala arkivet. Dessutom innehåller Gerrit också ett röstningssystem.
Om du har teknisk expertis för att installera och konfigurera Gerrit, och du letar efter ett gratis kodgranskningsverktyg, bör det fungera som en idealisk lösning för dina projekt.
9. Rhodecode
Rhodecode är ett webbaserat verktyg som hjälper dig att utföra kodgranskningar. Det stöder tre versionskontrollsystem: Mercurial, Git och Subversion. En molnbaserad version av Rhodecode kostar från $8 per användare och månad, medan en lokal lösning kostar $75 per användare och år. Även om det är ett premiumprogram kan dess community-utgåva, som är öppen källkod, laddas ner och användas gratis.
Rhodecode gör det möjligt för ett team att samarbeta effektivt genom iterativ, konversationell kodgranskning för att förbättra kodkvaliteten. Detta verktyg ger dessutom ett lager av behörighetshantering för säker utveckling.
Dessutom hjälper en visuell ändringslogg dig att navigera i projektets historik över olika grenar. En online kodredigerare finns också för små förändringar via webbgränssnittet.
Rhodecode integreras sömlöst med dina befintliga projekt, vilket gör det till ett utmärkt val för någon som letar efter ett webbaserat kodgranskningsverktyg. Därför är community-utgåvan idealisk för personer med teknisk expertis som letar efter ett gratis och pålitligt kodgranskningsverktyg.
10. Veracode
Veracode ger dig en svit kodgranskningsverktyg som låter dig automatisera testning, påskynda utvecklingen, integrera en redigeringsprocess, och förbättra effektiviteten i ditt projekt. Sviten med kodgranskningsverktyg från Veracode marknadsförs som en säkerhetslösning som söker efter sårbarhet i dina system. De tillhandahåller en uppsättning av två kodgranskningsverktyg:
- Statisk analys: ett verktyg som gör det möjligt för utvecklare att identifiera och åtgärda säkerhetsbrister i sin kod.
- Mjukvarukompositionsanalys: ett verktyg som hanterar redigerings- och lindringsprocessen för brister i kod.
Kodgranskning är en del av Mjukvarukompositionsanalysen och du kan välja en demo av Veracode innan du helt förbinder dig till ett köp. Här är länken för att begära en offert.
11. Reviewable
Reviewable är ett kodgranskningsverktyg för dra-förfrågningar på GitHub. Det är gratis för Öppen källkod-arkiv, med planer för privata arkiv från $39 per månad för tio användare. Eftersom verktyget är integrerat med GitHub kan du logga in med ditt GitHub-konto och komma igång.
Om du vill kolla in en typisk granskning på Reviewable kan du gå över till en demogranskning.
En intressant grej om Reviewable är att det övervinner några nackdelar med kodgranskningen i GitHubs dra-förfrågningsfunktion. Till exempel döljs en kommentar på en rad kod automatiskt av GitHub när en utvecklare ändrar raden eftersom GitHub förutsätter att problemet har åtgärdats. Men i verkligheten kan saker och ting vara annorlunda.
GitHub har också relativt små radgränser för att visa fil-diffar.
Om du letar efter ett verktyg som har en stark anknytning till GitHub men vill ha fler funktioner än dra-förfrågningar, bör Reviewable vara det rätta verktyget för dig.
12. Peer Review for Trac
Om du använder Subversion, ger Peer Review Plugin for Trac dig en gratis möjlighet med öppen källkod att genomföra kodgranskningar för dina projekt. Pluginet Peer Review integreras i öppen källkods-projektet Trac som är ett Wiki- och problemspårningssystem för utvecklingsprojekt.
Trac integrerar Wiki och problemspåraren med dina granskningar för att ge dig en fullständig lösning. Medan den grundläggande funktionaliteten att jämföra ändringar och konversation är tillgänglig, låter pluginet dig att utforma anpassade arbetsflöden för dina projekt.
Du kan till exempel bestämma vilka uppgifter som ska utföras vid utlösare som att lämna in en ändring eller ett godkännande i en kodgranskning. Du kan också skapa anpassade rapporter om dina projekt.
Om du också letar efter en Wiki för dokumentation och en problemspårare för att hantera projektets färdplan, bör Trac vara ett bra alternativ för dig.
Sammanfattning
Kodgranskningsprocessen spelar en nyckelroll när det gäller att öka effektiviteten i din organisation. Specifikt, att använda rätt kodgranskningsverktyg är det som hjälper dig att få bort redundans i din utvecklingscykel.
Vi tittade närmare på de mest populära kodgranskningsverktygen 2020 och det här är vad vi hittade:
- För ett litet team som just har börjat är Review Board ett bra val för att initiera en kodgranskningsprocess.
- Om du letar efter ett verktyg med öppen källkod, ge Gerrit, Peer Review for Trac eller community-utgåvan av Rhodecode ett försök.
- Letar du efter ett ganska lättanvänt kodgranskningsverktyg med support? Du borde prova Rhodecode.
- Om du använder Git och GitHub för att hantera din kodbas, testa GitHubs inbyggda kodgranskningsredigerare. Om du vill gå utöver de grundläggande funktionerna i dra-förfrågningar, bör du kolla in Reviewable.
- Tillhör du ett team som använder Oracle, SQL Server eller PowerBuilder för din databaskodhantering? Du kan prova Visual Expert, ett kodgranskningsverktyg som specialiserat sig på databaskod.
- Om du letar efter en premiumlösning, prova Atlassians Crucible, Smartbears Collaborator eller Veracode.
- Om du vill använda ML och AI för att gå utöver kodgranskning i beteendeanalysen bör du titta på CodeScene.
Nu är det din tur: vilket kodgranskningsverktyg använder du? Varför? Berätta i kommentarerna!
Föreslagen läsning:
Lämna ett svar