Rileggere e revisionare il codice con un LLM locale (revisione prima del commit)
La revisione del codice con un LLM locale ti offre un primo revisore automatico — per bug, casi limite e vulnerabilità evidenti — senza mai inviare il tuo codice proprietario nel cloud. Questa guida mostra come collegare un modello Ollama al tuo diff Git, impostare un hook pre-commit che commenti le tue modifiche prima di ogni commit e, soprattutto, quali siano i limiti delle sue capacità rispetto a una vera revisione umana.
#Perché fare la revisione del codice localmente
Incollare un diff in ChatGPT per farlo revisionare è comodo — fino al giorno in cui quel diff contiene una chiave API, la logica di business di un concorrente o del codice coperto da un NDA. La revisione del codice con un LLM locale risolve questo problema alla radice: il modello gira sulla tua macchina, il codice non esce mai dalla porta 11434.
- Codice proprietario
- Algoritmi interni, logica aziendale, segreti dell'architettura: nulla viene inviato a terzi che potrebbero registrarlo o usarlo per addestrare un modello.
- NDA e clausole di riservatezza
- Molti contratti con i clienti vietano esplicitamente di inviare il codice sorgente a un servizio esterno. L'esecuzione in locale è spesso l'unica scelta conforme.
- Nessun costo ricorrente
- Nessuna fatturazione per token. Puoi rileggere ogni commit, ogni ramo, senza monitorare un contatore.
- Funziona offline
- In treno, in un sito isolato dalla rete (air-gap), dietro un proxy aziendale con restrizioni di accesso: la revisione resta disponibile.
#Cosa rileva bene un LLM (e cosa gli sfugge)
Il tuo ChatGPT privato e gratuito sulla tua macchina in 1 ora — LM Studio, Ollama, Open WebUI, i tuoi documenti, senza cloud.
- Spazio online a vita
- PDF + file
- Aggiornamenti a vita
Prima di collegare qualsiasi cosa, bisogna stabilire le aspettative. Un modello di codice locale funziona bene sugli errori locali e leggibili nel diff, ma è debole su tutto ciò che richiede di conoscere il resto del sistema.
- Buoni risultati: bug locali
- Off-by-one, condizione invertita, variabile non inizializzata, risorsa non chiusa, gestione degli errori dimenticata.
- Bene: vulnerabilità evidenti
- Iniezione SQL tramite concatenazione, segreto scritto direttamente nel codice, percorso non validato, deserializzazione pericolosa, XSS di base.
- Bene: leggibilità
- Nomi poco chiari, funzione troppo lunga, codice morto, duplicazione visibile nel diff.
- Punto debole: logica tra file
- Vede solo il diff. Un contratto API violato altrove, un'invariante globale o un effetto collaterale in un'altra parte del codice gli sfuggono.
- Basso: intento di business
- Non sa cosa il codice dovrebbe fare. Segnala elementi plausibili, non necessariamente corretti.
- Rischio: falsi positivi e allucinazioni
- Può inventare una vulnerabilità inesistente o proporre una correzione che compromette il comportamento del codice. Tutto deve essere verificato.
#Prerequisiti
- Ollama installato
- Il daemon è in ascolto per impostazione predefinita su http://localhost:11434. Se l'installazione non è ancora stata effettuata, consultare la guida all'installazione di Ollama.
- Un repository Git
- La revisione si basa su git diff: serve quindi un progetto sotto controllo di versione con modifiche da esaminare.
- Un modello per il codice
- Un modello orientato al codice scaricato in locale (vedi la sezione successiva per la scelta in base alla tua VRAM).
- GPU consigliata
- Opzionale ma comodo: una RTX 3060 da 12 GB basta per un modello 8-9B in Q4. Funziona anche con la sola CPU, ma più lentamente.
#Quali modelli locali per rileggere del codice
Per la revisione del codice, preferisci un modello specializzato nel codice a uno generalista: comprende meglio la sintassi, gli idiomi e le insidie specifiche di ciascun linguaggio. Scegli la dimensione in base alla tua VRAM, in Q4_K_M (il miglior compromesso tra qualità e memoria). I tag qui sotto appartengono alla generazione 2026, verificata nella libreria Ollama.
- qwen3.5:9b — ~7 GB VRAM
- Il punto di partenza nel 2026. Veloce, 256k di contesto, funziona su una RTX 3060 da 12 GB o su un Mac M-series di base. Adatto alla revisione di piccoli diff.
- devstral:24b — ~14 GB VRAM
- Il miglior compromesso per la maggior parte delle postazioni. Specialista del codice e dell'editing tramite agenti (Mistral AI, Apache 2.0), ragiona meglio sui bug difficili da individuare e rientra nella memoria di una RTX 4080 da 16 GB.
- qwen3-coder:30b — ~19 GB VRAM
- MoE per il codice (30B, 3B attivi), 256k di contesto, molto veloce. Qualità nettamente superiore nel ragionamento tra funzioni. Richiede una RTX 4090 da 24 GB o un Mac con abbondante memoria unificata.
- Alternative
- gpt-oss:20b (open-weight di OpenAI, molto veloce) e glm-4.7-flash (MoE MIT, solido in modalità agente) sono buone opzioni; mistral-small (24B, buono in francese) può essere utile come modello generale se hai solo un modello a disposizione.
#Revisione manuale con un solo comando
Prima di automatizzare, inizia con una revisione manuale su richiesta. L'idea: inviare al modello, tramite l'API di Ollama, il diff delle tue modifiche non ancora incluse in un commit e leggere la sua risposta nel terminale. È l'elemento di base dell'hook che configureremo subito dopo.
Rendi eseguibile lo script (chmod +x review.sh), aggiungi le tue modifiche all'area di staging con git add, poi esegui ./review.sh. Ottieni un elenco di osservazioni che sei libero di ignorare o seguire. A questo punto nulla è bloccante — è una revisione assistita, non un controllo che impedisce di procedere.
#Configurare un hook pre-commit con Ollama, passo dopo passo
Il passo successivo: attivare automaticamente questa revisione a ogni git commit, tramite un hook pre-commit. Due approcci: un hook Git nativo (zero dipendenze) oppure il framework pre-commit. Descriviamo in dettaglio l'hook nativo, più semplice da capire e da verificare.
- 011. Creare il file di hookGli hook di Git si trovano in .git/hooks/. Crea .git/hooks/pre-commit (senza estensione). Git lo esegue automaticamente prima di completare ogni commit; un codice di uscita diverso da zero annulla il commit.
- 022. Scrivere lo script di revisioneL'hook recupera il diff delle modifiche nell'area di staging, lo invia a Ollama e mostra la risposta. Scegli: può essere puramente informativo (non annulla mai il commit) oppure bloccare il commit in base a una parola chiave di gravità emessa dal modello.
- 033. Rendere il hook eseguibilechmod +x .git/hooks/pre-commit — altrimenti Git lo ignora in silenzio.
- 044. TestareEsegui git add su un file con un bug inserito intenzionalmente, poi git commit. L'hook deve mostrare l'osservazione del modello prima di effettuare il commit.
- 055. Condividere con il team (opzionale)Gli hook nella cartella .git/hooks/ non sono versionati. Per condividerli, metti sotto controllo di versione una cartella .githooks/ e configura Git affinché la utilizzi con git config core.hooksPath .githooks.
#Curare il prompt di revisione
La qualità della revisione del codice con un LLM dipende soprattutto dal prompt. Un modello a cui non vengono date indicazioni adeguate sommerge le informazioni rilevanti sotto osservazioni di stile inutili. Tre principi rendono l'output utilizzabile.
- Restringere l'ambito
- Chiedi esplicitamente di ignorare lo stile e di segnalare solo bug, vulnerabilità e casi limite. Altrimenti ottieni dieci osservazioni cosmetiche per diff.
- Imporre un formato
- Un formato rigoroso (- file:riga — problema) rende l'output facile da scorrere e analizzabile automaticamente, se vuoi utilizzarlo in seguito.
- Chiedere un giudizio esplicito
- Una riga finale del tipo 'VERDICT: OK/REVOIR' fornisce un segnale binario semplice da testare in un hook bloccante.
- Indicare il linguaggio e il contesto
- Specifica il linguaggio e, se utile, la convenzione del progetto. Il modello adatta le sue verifiche (ad es. gestione della memoria in C, promise in JS).
#Limiti rispetto alla revisione umana: una valutazione onesta
Chiariamo ciò che un LLM locale usato per la revisione del codice non fa, per evitare un falso senso di sicurezza — il risultato peggiore sarebbe effettuare commit con meno prudenza credendo di essere tutelati.
- Visione limitata al diff
- Non conosce il resto del repository. Un cambiamento che rompe un chiamante in un altro file passa inosservato. I test di integrazione rimangono indispensabili.
- Nessuna comprensione del contesto aziendale
- Non sa se il codice fa ciò che chiede il ticket. Controlla la forma, non l'intenzione. Una persona che conosce il prodotto rimane insostituibile.
- Falsi positivi e allucinazioni
- Può inventare una vulnerabilità o una correzione errata. Ogni osservazione deve essere verificata prima di agire — non correggere mai alla cieca.
- Non sostituisce i linter e i test
- Un linter, un type-checker e una suite di test individuano categorie di errori in modo deterministico. L'LLM integra questi strumenti, non li sostituisce.
- Dipende dal modello e dal prompt
- Un modello 7B con un prompt formulato male non coglie aspetti che un modello 32B ben guidato individuerebbe. La qualità non è garantita né riproducibile token per token.
#Per approfondire
Per approfondire la scelta del modello, l'integrazione con l'IDE o la memoria necessaria, queste guide correlate del sito completano questa guida:
- Miglior LLM locale per la programmazione nel 2026
- Confronto dettagliato tra Devstral, Qwen3-Coder e alternative, con VRAM e velocità per modello.
- Copilot gratuito in locale in VS Code
- Andare oltre la revisione in CLI: chat e refactoring nell'IDE con Cline, Tabby e CodeGeeX.
- Scegliere la quantizzazione (Q4, Q5, Q8, FP16)
- Capire perché il Q4_K_M è consigliato e come far stare un 32B su una GPU da 16 GB.
Un feedback, un errore, una precisazione? Facci sapere, così la guida migliora per tutti.