Article

Ako nám CodeRabbit zrýchlil code reviews a zlepšil kvalitu kódu

V rámci projektu e-conomic sme implementovali CodeRabbit do všetkých repozitárov s cieľom znížiť 18-hodinové čakanie na prvý review a posilniť kvalitu kódu. Nástroj poskytuje okamžitý feedback, presadzuje best practices a umožňuje developerom sústrediť sa na dôležitejšie úlohy.

Article

Ako nám CodeRabbit zrýchlil code reviews a zlepšil kvalitu kódu

V rámci projektu e-conomic sme implementovali CodeRabbit do všetkých repozitárov s cieľom znížiť 18-hodinové čakanie na prvý review a posilniť kvalitu kódu. Nástroj poskytuje okamžitý feedback, presadzuje best practices a umožňuje developerom sústrediť sa na dôležitejšie úlohy.
Ako nám CodeRabbit zrýchlil code reviews a zlepšil kvalitu kódu

Article

Ako nám CodeRabbit zrýchlil code reviews a zlepšil kvalitu kódu

V rámci projektu e-conomic sme implementovali CodeRabbit do všetkých repozitárov s cieľom znížiť 18-hodinové čakanie na prvý review a posilniť kvalitu kódu. Nástroj poskytuje okamžitý feedback, presadzuje best practices a umožňuje developerom sústrediť sa na dôležitejšie úlohy.

AI

Article

Ako nám CodeRabbit zrýchlil code reviews a zlepšil kvalitu kódu

V rámci projektu e-conomic sme implementovali CodeRabbit do všetkých repozitárov s cieľom znížiť 18-hodinové čakanie na prvý review a posilniť kvalitu kódu. Nástroj poskytuje okamžitý feedback, presadzuje best practices a umožňuje developerom sústrediť sa na dôležitejšie úlohy.

AI

Na akom konkrétnom projekte ste CodeRabbit používali, aký bol cieľ tejto integrácie a ako ste nastavovali pravidlám a konfiguráciu Coderabbitu pre svoj tím?

CodeRabbit sme používali na projekte e-conomic. V rámci neho sme nástroj implementovali vo všetkých našich repozitároch, pričom sme sa primárne zamerali na tri kľúčové oblasti: našu frontendovú appku postavenú na Reacte, na backend vyvinutý v prostredí .NET a v neposlednom rade aj na našich DevOps repozitároch, kde sú chyby neprípustné.

Hlavným dôvodom, prečo sme sa pre CodeRabbit rozhodli, bolo okrem zrýchlenia našich code reviews aj zameranie na kvalitu kódu a presadzovanie best practices. Hlavne na backende sme mali veľký problém, pretože priemerný čas, kým sa na kód pozrel prvý človek, bol až 18 hodín, a to nás v celom developmente dosť brzdilo. Chceli sme teda, aby tú prvú, rutinnú kontrolu prevzala AI a umožnila tak našim developerom sústrediť sa na to, čo je naozaj dôležité – na biznis logiku, architektúru a celkovú kvalitu riešenia.

Samotná konfigurácia prebehla prekvapivo hladko cez jeden YAML súbor (.coderabbit.yaml), kde sme definovali všetko podstatné:

  • Definovanie inštrukcií: Najviac sme sa zamerali na pravidlá pre TypeScript a React. Nastavili sme mu detailné inštrukcie, ktoré riešia všetko od štruktúry komponentov a SOLID princípov, cez state management a používanie hooks, až po performance optimalizácie.
  • Pravidlá pre testovanie: Podobne sme definovali aj pravidlá pre písanie testov, štruktúru Arrange-Act-Assert a použitie špecifických nástrojov ako MSW na mockovanie API.
  • Podporné nástroje: Povolili sme funkcie ako automatické generovanie summaries pre pull requesty a aktivovali sme celý rad externých linterov a nástrojov na statickú analýzu (napr. ast-grep, shellcheck, gitleaks), ktoré sú integrované priamo v CodeRabbit.

Zmenil sa spôsob, akým váš tím realizuje pull requesty, odkedy používate CodeRabbit?

Áno, proces sa zlepšil, hlavne vďaka okamžitému feedbacku, ktorý teraz developeri dostávajú. Nie je to ani tak o tom, že by sa viac kontrolovali, ale skôr o tom, že majú možnosť svoj kód vylepšiť hneď na začiatku, ešte predtým, ako ho pošlú kolegom. Tento okamžitý feedback vnímajú ako veľmi užitočný.

Výsledkom je, že pull requesty prichádzajú na review v oveľa lepšom stave. Už sa nemusíme zaoberať drobnosťami a kolegovia sa môžu konečne venovať tomu, na čom skutočne záleží – na biznis logike, celkovej architektúre a dlhodobej udržateľnosti kódu.

Môžete uviesť príklad, kde AI odporučila niečo nesprávne alebo zavádzajúce – a ako ste danú situáciu riešili?

Ako každá AI, aj CodeRabbit môže mať občas "halucinácie" a chýbajuci kontext a navrhnúť niečo, čo nie je úplne správne. Práve preto je dôležité nezabúdať na kritické myslenie a nesledovať slepo každý jeho komentár. Namiesto toho, aby sme nesprávny návrh len ignorovali, využívame možnosť chatovať priamo s CodeRabbitom. Vieme sa ho opýtať, prečo niečo navrhol, alebo mu priamo povedať, že jeho návrh nie je v danom kontexte správny. Týmto spôsobom nielen verifikujeme jeho suggestions, ale vďaka funkcii "Learnings" ho aj aktívne učíme. Každá naša interakcia pomáha AI lepšie pochopiť náš kontext a preferencie, čím sa z pasívneho review stáva aktívna diskusia a zároveň proces neustáleho zlepšovania.

Ako často ste museli zasahovať do revízie umelej inteligencie manuálne a opravovať ho?

Namiesto toho, aby som hádal, môžeme sa pozrieť na reálne čísla. Sledujeme, koľko jeho návrhov reálne prijmeme, a to nám dosť napovie, ako často má pravdu.

  • Na našom React frontende, kde sme si dali záležať na inštrukciách, je acceptance rate jeho komentárov približne 46 %. Tento skvelý výsledok je priamym dôsledkom detailných inštrukcií, čo potvrdzuje, že investovaný čas sa vypláca.
  • Na .NET backende, kde sme zatiaľ toľko času do inštrukcií neinvestovali, je to menej, asi 27,5 %.

Tieto čísla pekne ukazujú, že čas investovaný do detailných inštrukcií sa nám vracia v podobe presnejších a relevantnejších návrhov od AI, čo zvyšuje jej celkový prínos.

Používate CodeRabbit ako doplnok ku klasickému code review, alebo v niektorých prípadoch úplne nahrádza človeka?

Berieme to čisto ako doplnok. Je to taká naša prvá obranná línia, ale človeka to nenahradí. Ako povedal jeden kolega, je to "great first-pass before human review".

Náš workflow je jednoduchý:

  1. AI (CodeRabbit) urobí prvú, detailnú revíziu na základe našich inštrukcií a napíše summary.
  2. Človek (kolega) príde po ňom a pozrie sa na to hlavné – či to celé dáva zmysel, či je dobrá architektúra a či to rieši zadaný problém.

Ako reagovali vaši kolegovia na komentáre od AI – prijali nástroj okamžite, alebo sa objavil počiatočný odpor?

Nástroj sme zavádzali postupne. Kľúčový bol pilotný program s 15 developermi, kde sme urobili prvotný fine-tuning inštrukcií. Až po tomto doladení sme nástroj sprístupnili pre celý tím. Tento postupný prístup sa nám veľmi osvedčil. Vďaka tomu, že sme nástroj najprv vyladili s menšou skupinou, počiatočnú zdržanlivosť v širšom tíme rýchlo vystriedal pozitívny feedback. Aktívne v tom pokračujeme a stále zbierame spätnú väzbu od kolegov, či už na konkrétne funkcie ako summaries a walkthroughs, alebo na obsah našich inštrukcií.

Kolegovia si obzvlášť pochvaľovali, že im nástroj pomáha s generovaním summaries pre pull requesty a pripomína im kontext alebo best practices, na ktoré by pri manuálnom review mohli zabudnúť.

Zaznamenali ste konkrétnu úsporu času pri revíziách – napríklad v číslach alebo percentách? A prejavila sa zmena aj na kvalite kódu?

Áno, zaznamenali sme výrazné zlepšenie. Naším hlavným cieľom bolo skrátiť spomínaných 18 hodín čakania na prvý review, čo sa nám podarilo.

Zlepšenie sme videli aj v kvalite kódu. Vďaka našim detailným inštrukciám nám nástroj pomáha presadzovať interné štandardy. Efektívne odhaľuje problémy s performance (napríklad zbytočné re-renderovanie), so zložitosťou algoritmov alebo s nadbytočnými database calls. To všetko prispieva k stabilnejšej a rýchlejšej aplikácii.

Aké úpravy alebo neštandardné postupy ("hacky") ste museli zaviesť, aby CodeRabbit lepšie fungoval vo vašom prostredí?

Povedal by som, že najväčší "hack" nebol v kóde, ale v našom prístupe. Rýchlo sme zistili, že kľúčové sú tri veci:

  1. Aktívne využívanie: Zistili sme, že najväčší prínos má nástroj vtedy, keď ho niektorí developeri neberú len pasívne, ale začali ho používať ako on-demand asistenta. Často sa ho pýtajú na vysvetlenie zložitejších častí kódu (@coderabbitai explain this function), na analýzu časovej komplexity (@coderabbitai what is the complexity of this method?), alebo ho žiadajú o návrhy na zlepšenie (@coderabbitai suggest how to refactor this component for better readability).
  2. Detailná konfigurácia: Tie rozsiahle pravidlá, ktoré sme si pre React a testovanie nastavili, sú základom úspechu. Čím viac kontextu mu dáte, tým lepšie sú jeho návrhy.
  3. Zníženie informačného šumu: Upravili sme nastavenia tak, aby nás nástroj zbytočne nespamoval. Vypli sme napríklad analýzu draft pull requestov a notifikácie po každom jednom commite.

Odporučili by ste jeho nasadenie aj v tíme, kde pôsobí menej skúsených vývojárov? Prečo (áno/nie)?

Jednoznačne áno. Práve pre tímy s menej skúsenými kolegami je to veľký prínos. Nástroj im poskytuje podporu a okamžitú spätnú väzbu.

  • Okamžitý feedback: Menej skúsený developer nemusí čakať na skúsenejšieho kolegu, aby ho upozornil na nedodržanie interných pravidiel. AI mu dáva spätnú väzbu okamžite.
  • Učenie sa za pochodu: Nástroj prirodzene vedie developerov k písaniu čistejšieho a štandardizovaného kódu.
  • Efektívnejší mentoring: Skúsenejší kolegovia môžu svoj čas venovať menej skúseným kolegom v zložitejších oblastiach, ako je napríklad architektúra, namiesto opakovania základných pripomienok.

Ak by ste mali zhodnotiť prínos nástroja vo vašej konkrétnej prípadovej štúdii, čo by boli najväčšie výhody a limity?

Najväčšie plusy:

  1. Dohľad nad architektúrou: Schopnosť analyzovať celkovú štruktúru kódu a strážiť kľúčové architektonické princípy je na nezaplatenie.
  2. Úspora času skúsenejších kolegov: Odbremenenie od rutinnej práce im umožňuje sústrediť sa na zložitejšie problémy.
  3. Rýchly a kvalitný feedback: Nástroj poskytuje okamžitú spätnú väzbu, čím pomáha nielen rýchlo odhaliť chyby, ale aj aktívne presadzovať naše interné štandardy, či už ide o performance, čitateľnosť kódu alebo dodržiavanie best practices.

Najväčšie limity:

  1. Business Knowledge: AI analyzuje kód, ale chýba jej hlbšie pochopenie biznisového kontextu. Nedokáže posúdiť, či je navrhované riešenie v súlade s celkovými cieľmi produktu.
  2. Nevyhnutnosť kritického myslenia: Nástroj by nemal nahrádzať úsudok developera. Je dôležité pristupovať k jeho návrhom kriticky a overovať ich. Finálne rozhodnutie a zodpovednosť zostávajú vždy na človeku.


Súvisiaci obsah