Code-review, oftewel het toetsen van code, is een belangrijk onderdeel van het ontwikkelingsproces van software. Hierbij wordt onder meer de broncode getest om bugs en fouten in een zo vroeg mogelijk stadium op te sporen. Het proces van code-review wordt meestal gedaan voordat een stuk code wordt samengevoegd met de codebase.
Effectief gebruik van code-review voorkomt dat bugs en fouten je project insluipen. Het verbetert al in een vroeg stadium van een project de kwaliteit van je code.
In dit artikel leggen we uit wat code-review is en verkennen we populaire code-review tools die organisaties kunnen gebruiken voor het code-review proces.
Wat is code-review?
Het voornaamste doel van het code-review proces is om nieuwe code te toetsen op bugs, fouten en kwaliteit. Het proces is niet bedoeld om als éénrichtingsverkeer te dienen wat betreft feedback, maar gaat erom dat je met elkaar de geschreven code verbetert. Daardoor is een bijkomend voordeel van het beoordelen van code dat de programmeervaardigheden van het hele team worden verbeterd.
Als je overweegt om ook binnen jouw organisatie met code-review aan de slag te gaan, moet je eerst beslissen wíe de code moet beoordelen. Als je in een klein team werkt, zou je de teamleads verantwoordelijk kunnen maken voor het beoordelen van alle code. In een groter team met meerdere beoordelaars, zou je ook een proces kunnen inrichten waarbij elke code-review wordt toegewezen aan een ervaren developer – op basis van hun huidige workload.
De volgende zaken waarover je na moet denken zijn het aantal beoordelingsrondes, welke deadlines je aan wil houden, en wat de minimumvereisten zijn bij het versturen van een verzoek tot code-review.
De laatste overweging is hoe de feedback gegeven moeten worden binnen het code-review proces. Zorg dat daarbij de positieve aspecten van de code benadrukt worden, terwijl er tegelijkertijd alternatieven geboden worden voor minder goede code.
Feedback moet altijd constructief genoeg zijn om de ontwikkelaar. Hiermee moedig je iemand aan om na te denken over jouw benadering en kan er indien gewenst een constructief gesprek op gang worden gebracht.
Het gebeurt helaas vaak genoeg dat code-reviews op een bepaald moment vastlopen, waardoor ze minder efficiënt of zelfs schadelijk worden.
Waarom is code-review zo belangrijk?
Code-review is erg belangrijk. Daarom is het des te vreemd dat het vaak geen deel uitmaakt van de officiële lesstof op scholen. Je leert de ins en outs van een programmeertaal en alles over projectmanagement, maar code-review is een proces dat je zelf moet ontwikkelen naarmate de organisatie volwassen wordt.
Code-review is cruciaal om de volgende redenen:
- Je zorgt ervoor dat er geen bugs in de code zitten.
- Je minimaliseert de kans op problemen.
- Je zorgt dat je de nieuwe coderichtlijnen opvolgt.
- Je verhoogt de efficiëntie van nieuwe code.
Code-reviews zorgen er verder voor dat de teamleden beter worden in programmeren. Omdat een senior developer meestal de code-review uitvoert, kan een junior veel leren van de feedback.
Hoe voer je een code-review uit?
Er zijn grofweg vier manieren om een code-review uit te voeren.
“Over-de-schouder” code-reviews.
Hierbij wordt de review uitgevoerd op de werkplek van de ontwikkelaar, waarbij een ervaren teamlid de code doorneemt (meekijkt over de schouder van de ontwikkelaar) en suggesties voorstelt. Dit is de eenvoudigste aanpak voor een code-review en vereist weinig structuur.
Een dergelijke code-review kan je dagelijks uitvoeren, naast een meer formele code-review. Over-de-schouder reviews worden veelal in levende lijve gedaan, vandaar de naam, maar teams op afstand kunnen dezelfde methode gebruiken via samenwerkingstools.
Doorgeven per e-mail
Persoonlijke code-reviews zijn zeker een goede manier om nieuwe code te beoordelen, maar geografisch gespreide teams leunen meestal meer op e-mail voor code-reviews.
In een dergelijk proces mailt een ontwikkelaar een pakket wijzigingen door naar het hele ontwikkelingsteam, meestal via versiebeheersystemen die automatisch meldingen aanmaken. Via deze mail kan er een gesprek op gang komen over de veranderingen, waarbij teamleden extra wijzigingen kunnen aanvragen, fouten kunnen melden, of om opheldering kunnen vragen.
‘Vroegah’ was e-mail de voornaamste manier om te communiceren, vooral vanwege de flexibiliteit. Open-source organisaties hielden vaak een openbare mailinglist bij, die ook als medium fungeerde om code te toetsen en bediscussiëren.
Maar sinds er code-review tools zijn, worden dergelijke mailinglijsten steeds meer voor aankondigingen en algemene discussies gebruikt.
Pair-programming
Pair-programming oftewel programmeren in koppels is een continu code-review proces. Twee ontwikkelaars zitten samen op een werkplek, maar slechts één van hen is actief aan het programmeren terwijl de ander de hele tijd feedback geeft.
Alhoewel dit een goede methode kan zijn om nieuwe code te inspecteren en developers te trainen, kan het ook inefficiënt zijn doordat het zoveel tijd kost. Door deze methode kan de beoordelaar immers de hele tijd niks anders doen kijken hoe iemand anders code schrijft.
Review met behulp van tools
Tool-assisted code-review maakt gebruik van gespecialiseerd tools om het code-review proces te faciliteren. Een tool helpt je meestal met de volgende taken:
- Organiseren en weergeven van bijgewerkte bestanden in een pakket.
- Faciliteren van dialoog tussen reviewers en developers.
- Met behulp van indicatoren de efficiëntie van het code-review proces meten.
Dit zijn de algemene eisen van een code-review tool, maar moderne tools bieden vaak ook nog andere features. We zullen verderop in dit artikel een aantal tools gedetailleerd bekijken.
Waarom zou je code-review tools gebruiken?
De belangrijk reden waarom je een tool moet gebruiken voor het toetsen van code, is verbeterde efficiëntie. Alhoewel bovenstaande traditionele manieren van code-reviewing vroeger wel werkten, ben je waarschijnlijk minder efficiënt als je nog niet overgestapt bent naar een code-review tool. Een code-review tool automatiseert het proces van het beoordelen van code zodat een reviewer alleen maar op de code hoeft te letten.
Een code-review tool integreert in je development-cyclus zodat een code-review wordt gestart voordat nieuwe code wordt toegevoegd aan de codebase. Je kunt een tool kiezen die goed werkt met jouw technologiestack zodat het probleemloos integreert in je workflow.
Als je bijvoorbeeld Git gebruikt voor codemanagement en TravisCI voor continue integratie, zorg dan dat je een tool kiest die beide technologieën ondersteunt zodat de code-review soepel in je ontwikkelingsproces wordt opgenomen.
Er zijn twee manieren van het testen van code binnen software-development: statisch en dynamisch.
Dynamische analyse draait om het controleren van de code volgens een aantal regels en testen, die meestal een vooraf opgesteld script volgen. Statische code-tests worden gedaan nadat een ontwikkelaar nieuwe code heeft gemaakt die aan de huidige code toegevoegd moet worden.
Laten we nu gaan kijken naar de populairste code-review tools!
12 krachtige code-review tools beter bekeken
In dit deel zullen we de populairste code-review tools voor statische beoordelingen bekijken.
1. Review Board
Review Board is een web-based open-source tool voor code-review. Om deze code-review tool te testen, kun je de demo uitproberen op hun website of download en stel de software in op je server.
De Python programmeertaal en bijbehorende installers, MySQL of PostgreSQL als database en een webserver zijn allemaal benodigd om Review Board op een server te kunnen laten draaien.
Je kunt Review Board met allerlei versiebeheersystemen integreren – Git, Mercurial, CVS, Subversion en Perforce. Je kunt Review Board ook direct linken aan Amazon S3 voor het rechtstreeks opslaan van screenshots in de tool.
Review Board laat je zowel pre-commit (voor) als post-commit (na) code-reviews uitvoeren, afhankelijk van wat je nodig hebt. Als je nog niet een versiebeheersysteem hebt geïntegreerd, kun je ook een diff bestand gebruiken om de veranderingen in je code in de tool te laden.
Je krijgt ook een grafische vergelijking van de veranderingen in je code te zien. Naast code-reviews laat Review Board je ook documenten reviewen.
De eerste versie van Review Board is alweer 10 jaar oud, maar wordt nog altijd actief ontwikkeld. De community voor Review Board is daardoor gegroeid over de afgelopen jaren, dus je zult waarschijnlijk makkelijk ondersteuning kunnen vinden als je problemen tegenkomt.
Review Board is een eenvoudige tool voor code-reviews, die je zelf op je server kunt hosten. Als je je code niet op een publieke website wilt hosten is dit zeker het proberen waard.
2. Crucible
Crucible is een collaboratieve code-review tool van Atlassian. Het is een commerciële toolsuite waarmee je code kan beoordelen, verandering van plannen kunt bespreken en bugs kunt identificeren binnen allerlei versiebeheersystemen.
Crucible biedt twee pakketten, één voor kleine teams en de andere voor bedrijven. Voor een klein team moet je één betaling van $10 doen voor een onbeperkt aantal repository’s voor maximaal vijf gebruikers. Voor grotere teams beginnen de prijzen vanaf $1.100 voor tien gebruikers, en ook een onbeperkt aantal repository’s.
Beide pakketten kun je 30 dagen gratis uitproberen, zonder creditcard.
Net als Review Board ondersteunt Crucible allerlei versiebeheersystemen — SVN, Git, Mercurial, CVS en Perforce. De belangrijkste functie blijft echter dat je er code-reviews mee kunt uitvoeren. Naast algemene opmerkingen over de code, kun je ook in-line commentaar geven via de diff view zodat je precies kunt aangeven waar je het over hebt.
Crucible integreert goed met de andere producten van Atlassian zoals Confluence en Enterprise BitBucket. Maar je haalt waarschijnlijk het meeste uit Crucible als je het combineert met Jira, Issue van Atlassian en Project Tracker. Je kunt er pre-commit reviews en audits op samengevoegde code mee uitvoeren.
3. GitHub
Als je GitHub gebruikt om je Git-repository’s bij te houden in de cloud, dan heb je wellicht al forks en pull-verzoeken gebruikt om code te beoordelen. Als je geen idee hebt wat GitHub is, vind je hier een introductie voor beginners bij GitHub en hier de verschillen tussen Git en GitHub.
GitHub heeft een ingebouwde code-review tool in de pull-requests. De code-review tool hoort bij de kerndiensten van GitHub, die ook een gratis pakket bieden voor ontwikkelaars. Het gratis pakket van GitHub beperkt het aantal gebruikers tot drie, binnen privé-repository’s. Betaalde pakketten beginnen vanaf $7 per maand.
GitHub staat een reviewer met toegang tot de repository toe om zichzelf aan een pull-request toe te wijzen en een review te geven. Een ontwikkelaar die een pull-verzoek heeft ingestuurd kan ook een review vragen van een admin.
Naast de discussie over het algemene pull-verzoek, kun je ook de veranderingen analyseren, inline-reacties achterlaten en de geschiedenis van veranderingen bekijken. De code-review tool biedt je ook de mogelijkheid om eenvoudige Git-conflicten op te lossen via de web-interface. Je kunt GitHub zelfs integreren met andere review tools via hun marktplaats om een nog robuuster proces te bewerkstelligen.
De GitHub code-review tool is met name handig als je al op hun platform zit. Je hoeft verder niets te installeren of in te stellen. Het voornaamste probleem met de GitHub code-review tool is dat het alleen Git repository’s ondersteunt die op GitHub worden gehost. Als je naar een vergelijkbare code-review tool zoekt die je kunt downloaden en op je server kunt hosten, kun je GitLab proberen.
4. Axolo
Axolo is niet wat je verwacht als je “code review tool” leest. Je stelt je waarschijnlijk een scherm vol diffs voor. Maar niet hier! Axolo draait om communicatie. Concreet neemt Axolo alle gebruikelijke heen-en-weergeloop op GitHub of GitLab en brengt de discussie naar Slack.
Ze doen dat door voor elke code review een kortstondig Slack kanaal aan te maken, ze nodigen alleen de mensen uit die erbij moeten zijn (de code auteur, assignees, en reviewers), sturen alleen de vereiste meldingen in het kanaal (code commentaar, CI/CD, …), en archiveren het kanaal zodra de branch is samengevoegd.
Met dagelijkse reminders, pull request recap meldingen voor stand-ups, en speciale tijdslots voor code review, kunnen engineering teams naadloos code reviewen zonder achterhaalde pull requests.
5. Collaborator
Collaborator van SmartBear is een review-tool voor peer-code en documenten en kan worden gebruikt door development-teams. Naast het beoordelen van broncode, kunnen team ook ontwerpdocumenten reviewen via Collaborator. Een licentiepakket voor 5 gebruikers kost $535 per jaar. Een gratis testversie is beschikbaar, afhankelijk van de eisen van je bedrijf.
Collaborator ondersteunt allerlei versiebeheersystemen zoals Subversion, Git, CVS, Mercurial, Perforce en TFS. Het is ook erg sterk in het integreren met populaire projectmanagement-tools en IDE’s zoals Jira, Eclipse en Visual Studio.
Deze tool maakt het ook mogelijk om de belangrijkste indicatoren van je code-review proces te analyseren en rapporteren. Verder helpt Collaborator in het audit management en tracken van bugs. Als je tech-stack enterprisesoftware bevat en je hebt ondersteuning nodig om je code-review proces in te stellen, is Collaborator zeker het proberen waard.
6. CodeScene
CodeScene is een code-review tool die verder gaat dan de traditionele statische analyse van code. Het voert namelijk ook een gedragsanalyse van de code uit door een tijdsdimensie toe te voegen, zodat je de evolutie van je codebase kunt zien. CodeScene is beschikbaar in twee varianten: een cloud-based oplossing en een oplossing op locatie.
De cloud-based pakketten van CodeScene zijn tot een bepaalde hoogte gratis voor publieke repository’s die op GitHub worden gehost. Tot aan tien private repository’s en een team van tien leden kost CodeScene €99 (of $115) per maand. Een installatie op locatie van CodeScene kost €15 (ongeveer $17) per ontwikkelaar per maand.
CodeScene verwerkt de geschiedenis van je versies om visualisaties van je code weer te geven. Daarnaast gebruikt het machine-learning algoritmen om sociale patronen en verborgen risico’s in de code te herkennen.
Door naar de geschiedenis van het versiebeheer te kijken, maakt CodeScene een profiel van elk teamlid om hun kennis in kaart te brengen en afhankelijkheden binnen het team te laten zien. Het introduceert ook het concept van hotspots binnen je repository door bestanden te identificeren die het meest bewerkt worden. Die hotspots hebben in de nabije toekomst waarschijnlijk de meeste aandacht nodig.
Als je op zoek bent naar een tool die verder gaat dan de traditionele code-review tool, dan moet je zeker de gratis testversie van CodeScene proberen. Om meer over de onderliggende technieken van de gedragsanalyse van CodeScene te lezen, kun je dit whitepaper lezen over de use cases en rollen bij CodeScene.
7. Visual Expert
Visual Expert is een enterprise-oplossing voor code-reviews, die zich vooral richt op code voor databases. Het ondersteunt slechts drie platforms: PowerBuilder, SQL Server en Oracle PL/SQL. Als je een ander DBMS gebruikt, zul je Visual Expert dus niet kunnen integreren.
Er is een gratis proefversie en je moet daarna een verzoek sturen voor een offerte.
Naast de traditionele code-review analyseert Visual Expert elke verandering in je code om eventuele verslechteringen qua prestaties te voorspellen. De tool kan verder automatisch de volledige documentatie van je toepassing maken op basis van je code.
Als je dus PowerBuilder, SQL Server, of Oracle PL/SQL gebruikt en je wilt graag een gespecialiseerde code-review tool, dan kun je Visual Expert proberen (hierbij ook nog een uitleg over het bouwen van efficiënte WordPress query’s).
8. Gerrit
Gerrit is een gratis en open-source web-based code-review tool voor Git repository’s, geschreven in Java. Zoals je op basis van de oer-Hollandse naam al zou verwachten, is er een Nederlandse link. Gerrit verwijst namelijk naar Gerrit Rietveld, de favoriete architect van Guido van Rossum, de ontwikkelaar achter Gerrit. Om Gerrit te gebruiken moet je de broncode downloaden en in Java draaien. Hier vind je het installatieproces voor een standalone versie van Gerrit.
Gerrit combineert de functionaliteiten van een bug tracker en code-review tool. Tijdens een review worden de veranderingen naast elkaar weergegeven in een samengevoegd beeld, met de mogelijkheid een gesprek te starten voor elke regel code die toegevoegd wordt. De tool werkt als tussenstap tussen een developer en de centrale repository. Daarnaast bevat Gerrit ook een systeem om mee te stemmen.
Als je de technische kennis hebt om Gerrit te installeren en te configureren, en je op zoek bent naar een gratis code-review tool (Nederlandser wordt het niet), dan zou dit de ideale oplossing kunnen zijn.
9. Rhodecode
Rhodecode is een web-based tool die je helpt bij het uitvoeren van code-reviews. Het ondersteunt drie versiebeheersystemen: Mercurial, Git en Subversion. Een cloud-based versie van Rhodecode begint bij $8 per gebruiker per maand, en een oplossing op locatie kost $75 per gebruiker per jaar (iets goedkoper dus). Alhoewel het enterprise software is, is er ook een community editie, die gratis en opensource is, en die je volledig gratis kunt downloaden en compileren.
Rhodecode maakt het mogelijk voor een team om effectief samen te werken via herhalende, gespreksgerichte code-reviews die de kwaliteit van de code verbeteren. Deze tool biedt ook nog een laag voor het beheren van rechten voor extra veilige ontwikkeling.
Daarnaast helpt de visuele changelog je bij het navigeren van de geschiedenis van je project langs de verschillende zij-projecten. Een online code editor wordt ook meegeleverd voor kleine wijzigingen binnen de web-interface.
Rhodecode integreert perfect met je bestaande projecten, waardoor het een goede keus is als je op zoek bent naar een web-based code-review tool. De community editie is daardoor ideaal voor mensen met wat technische kennis die op zoek zijn naar een gratis en betrouwbare code-review tool.
10. Veracode
Veracode biedt een pakket code-review tools waarmee je het testen kunt automatiseren, ontwikkeling kunt versnellen, een remediation proces kunt integreren, en de algehele efficiëntie van je project kunt verbeteren. Het pakket code-review tools van Veracode wordt verkocht als een beveiligingsoplossing die zoekt naar kwetsbaarheden in je systemen. Het bevat een set met twee code-review tools:
- Static Analysis: een tool die ontwikkelaars helpt bij het identificeren en oplossen van veiligheidsfouten in hun code.
- Software Composition Analysis: een tool die het remediation en mitigatie-proces van fouten in de code beheert.
Code-review is onderdeel van de Software Composition Analysis en je kunt kiezen voor een demo van Veracode voordat je jezelf ergens op vastlegt. Dit is de link waar je een offerte kunt aanvragen.
11. Reviewable
Reviewable is een code-review tool voor GitHub pull-verzoeken. Het is gratis voor opensource repository’s, en biedt pakketten voor privé repository’s vanaf $39 per maand voor tien gebruikers. Aangezien de tool integreert met GitHub kun je meteen inloggen met je GitHub-account en beginnen.
Als je een gemiddelde review wilt zien bij Reviewable, kun je hun demo review bekijken.
Interessant aan Reviewable is dat het een aantal nadelen van de code-review in de pull-request feature van GitHub oplost. Zo wordt bijvoorbeeld een opmerking over een regel code automatisch verborgen door GitHub als een ontwikkelaar de regel aanpast omdat GitHub dan aanneemt dat het probleem is opgelost. Maar dat is natuurlijk niet altijd zo.
Daarnaast heeft GitHub ook vrij beperkte ruimte bij het weergeven van verschillen tussen bestanden.
Als je een tool zoekt die nauw samenwerkt met GitHub maar met meer features dan alleen pull-verzoeken, dan kan Reviewable voor jou een goede oplossing zijn.
12. Peer Review for Trac
Als je Subversion gebruikt, biedt Peer Review Plugin for Trac een gratis en opensource optie om code-reviews op je projecten uit te voeren. De Peer Review Plugin integreert met het Trac opensource project, wat een wiki en probleem-volgsysteem is voor ontwikkelingsprojecten.
Trac integreert de wiki en de issue-tracker met je reviews voor een volledige end-to-end oplossing. Alhoewel ook de basisfuncties beschikbaar zijn voor het vergelijken van veranderingen en starten van gesprekken, kun je ook op maat gemaakte workflows ontwerpen met de plugin.
Als je bijvoorbeeld wilt dat taken worden uitgevoerd naar aanleiding van bepaalde triggers, zoals het versturen van een verandering of goedkeuring van een code-review. Je kunt ook custom rapporten maken over je projecten.
Als je op zoek bent naar een wiki voor documentatie en een issue tracker om de roadmap van je project te beheren, kan Trac een goede optie zijn.
Samenvatting
Het code-review proces speelt een sleutelrol bij het verbeteren van je organisatie. Door je voordeel te doen met de juiste code-review tool kun je dubbel werk in je developmentcyclus voorkomen.
We hebben goed gekeken naar de populairste code-review tools van 2020 en dit zijn onze conclusies:
- Als je een klein team hebt dat net begint, is Review Board een goede keuze om het code-review proces te introduceren.
- Als je op zoek bent naar een opensource code-review tool, kun je Gerrit, Peer Review for Trac of de community editie van Rhodecode
- Ben je op zoek naar een eenvoudige manier om code-review tools te gebruiken met goede ondersteuning? Dan is Rhodecode zeker het proberen waard.
- Als je Git en GitHub gebruikt om je codebase te beheren, probeer dan ook eens de ingebouwde code-review editor van GitHub. Als je verder wilt gaan dan de eenvoudige features van pull requests, dan kun je Reviewable eens wat beter bekijken.
- Heb je een team dat Oracle, SQL Server of PowerBuilder gebruikt voor het beheren van de code voor een database? Dan kun je Visual Expert gebruiken, een code-review tool die zich specifiek richt op databasecode.
- Als je op zoek bent naar een enterprise oplossing, kun je Crucible van Atlassian, Collaborator van Smartbear of Veracode
- Als je graag ML en AI wilt gebruiken om van je code-review een geavanceerde gedragsanalyse te maken, dan zou je CodeScene moeten gebruiken.
Nu is het jouw beurt: welke code-review tool gebruik jij? En waarom? Laat het ons weten in de reacties hieronder!
Leessuggesties:
Laat een reactie achter