Vai al contenuto principaleMigliorare la copertura del codice con Devin
La maggior parte delle applicazioni in produzione non ha il 100% di copertura del codice. I team di ingegneria devono stabilire le priorità in modo rigoroso e tendono a concentrarsi sulla scrittura di test per i percorsi critici, così da ottenere il massimo ritorno dal tempo investito. Devin può colmare questo divario analizzando lo stile della suite di test esistente di una codebase e aumentando la copertura di funzioni meno critiche ma comunque importanti.
Per questo esempio, utilizzeremo un’applicazione di esempio TypeScript open source basata sulla specifica RealWorld che ha già alcuni test, ma non una copertura completa: https://github.com/SeuRonao/realworld-express-prisma
Puoi seguire l’intera Run qui oppure puoi leggere il resto di questo post, che evidenzia ciascun passaggio del processo di Devin. Metteremo in evidenza varie parti del Workspace di Devin, come l’Editor o la Shell.
Iniziamo la nostra Run con un semplice prompt che chiede a Devin di configurare il nostro ambiente di sviluppo e valutare la copertura di codice esistente della nostra applicazione:
Nella sua shell Devin per prima cosa clona il nostro repository da GitHub, analizza il file README e installa le dipendenze del progetto nel suo ambiente locale.
Devin quindi utilizza il suo editor integrato per creare il file .env, in modo che l’applicazione possa essere eseguita in locale. Quando lavori con Devin, hai anche la possibilità di aprire direttamente VS Code per effettuare modifiche manuali o rivedere i file su cui Devin sta lavorando.
Definire una baseline di copertura
Devin esegue quindi la suite di test nella sua Shell. Uno dei principali vantaggi di Devin è che non solo può modificare o creare codice per il tuo team, ma può anche lavorare direttamente nel suo Browser e nel suo Terminal per effettuare interazioni di livello più alto con la tua codebase, il relativo ambiente di sviluppo o persino con la tua applicazione in esecuzione.
Qui sotto possiamo vedere come Devin ha interpretato e trasformato i risultati ottenuti nella sua Shell in messaggi di chat, in modo che siano più leggibili e sintetici.
Creare un piano di miglioramento
Ora possiamo passare all’attività principale, aumentare la copertura del codice. Sembra che profileViewer.ts sia un buon punto da cui iniziare, dato che ha una copertura sostanzialmente inesistente per impostazione predefinita. Chiediamo a Devin quali sono i prossimi passi e ci tiene aggiornati su ciò che accade durante l’intero processo.
Devin è in grado di leggere il file esistente, determinare quali casi di test sia opportuno implementare sulla base della funzionalità esistente e poi scrivere effettivamente i nuovi test per noi, senza bisogno di alcun intervento da parte nostra. Dopo aver terminato l’implementazione dei nuovi casi di test, Devin ci fornisce un riepilogo finale delle modifiche effettuate:
Condivide anche il nuovo file con noi, in modo che possiamo scaricarlo ed esaminarlo. In alternativa, avremmo potuto chiedere a Devin di creare una Pull Request direttamente su GitHub con questo nuovo file, così che potesse essere esaminato come parte del nostro normale processo di revisione del codice. Decido semplicemente di esaminarlo nell’Editor integrato di Devin, così non devo scaricare il file.
In generale le modifiche sembrano buone, ma vogliamo assicurarci che non ci siano bug in fase di esecuzione che ci siano sfuggiti, quindi chiediamo a Devin di eseguire di nuovo la suite di test e riportarci i risultati.
L’esecuzione procede come previsto e abbiamo aumentato la nostra copertura complessiva dal 28,57% delle funzioni al 57,14% delle funzioni, che è esattamente quello che volevamo ottenere. L’intero processo ha richiesto a Devin meno di 10 minuti di lavoro effettivo per essere implementato, anche se ci siamo allontanati a metà prima di fornire a Devin il nostro successivo set di istruzioni. Puoi aumentare la copertura dei test e rimuovere un’attività tediosa dal backlog del tuo team di ingegneria semplicemente delegandola a Devin.
Se ti capita spesso di tornare a Devin per aumentare la copertura del codice, puoi persino trasformare questo prompt in un Playbook dettagliato, così da poter avviare facilmente nuove Run per diverse parti della tua applicazione. Se vuoi saperne di più sui tipi di Prompt per cui Devin funziona bene, consulta alcuni dei nostri esempi nella documentazione.