AI Code Review voor Azure DevOps
Automatische code review in de pipeline
Extensie die pull requests automatisch reviewt met een taalmodel en de bevindingen als commentaar terugplaatst in Azure DevOps, met ondersteuning voor meerdere AI-providers.

Code reviews kosten tijd, en die tijd is er niet altijd. Voor Arcady, een Microsoft Solutions Partner, onderzocht en bouwde ik tijdens mijn afstuderen een extensie die dat proces ondersteunt. De extensie voert automatisch een AI-review uit op een pull request en plaatst de bevindingen terug als commentaar binnen Azure DevOps, zodat de ontwikkelaar het platform niet hoeft te verlaten.
De review draait als pipeline task. Daardoor bepaalt de gebruiker zelf op welk moment in het ontwikkelproces de review wordt uitgevoerd. De task haalt de wijzigingen op met git diff, bouwt daar een prompt omheen, stuurt die naar de gekozen AI-provider, valideert het antwoord en plaatst het resultaat als commentaar op de juiste regel via de Thread API van Azure DevOps.
Het uitgangspunt was dat de opdrachtgever niet vast wilde zitten aan één AI-aanbieder. Daarom is de architectuur provider-agnostisch opgezet met het Strategy-patroon. GitHub Copilot, Azure AI Foundry en een eigen OpenAI-compatibel endpoint hebben elk een eigen implementatie achter een gedeelde interface, en welke wordt gebruikt bepaalt een factory op basis van de pipeline-configuratie. Een nieuwe provider toevoegen komt daardoor neer op één extra adapter, zonder dat de rest van de code verandert.
Betrouwbaarheid was een aandachtspunt, omdat de output van een taalmodel niet te vertrouwen is. De respons wordt daarom geparsed en gevalideerd voordat er iets wordt geplaatst, en foutafhandeling zit op drie niveaus: het ophalen van de diff, de AI-aanroep en het plaatsen van de comments. Bij grote pull requests liep de onderliggende SDK vast, waarvoor ik gelaagde capaciteitsgrenzen bouwde die een omvangrijke diff opsplitsen en de resultaten samenvoegen.
Security is als expliciet ontwerpuitgangspunt meegenomen. Het AI-model wordt behandeld als onbetrouwbare bron die alleen tekst mag produceren, en alle permissieverzoeken vanuit de SDK worden standaard geweigerd om prompt injection af te vangen. Git-commando’s worden aangeroepen met argumenten als array in plaats van via een shell, en tokens worden gemaskeerd in de logs.
Naast de extensie leverde ik een testsuite met unit tests en integratietests voor de kerncomponenten, een CI/CD-pipeline voor build en release, en technische documentatie voor overdracht en doorontwikkeling. De extensie is gevalideerd op echte pull requests en wordt door Arcady verder opgepakt.

