← Ultimi articoli
🤖 AI

LLM Code Smells: A Taxonomy and Detection Approach

Questo articolo presenta una tassonomia raffinata di nove code smell per LLM e introduce SpecDetect4LLM, uno strumento di analisi statica che dimostra elevata precisione e richiamo nel rilevare tali problemi di integrazione nel 73,5% dei 692 progetti open-source analizzati.

Autori originali: Zacharie Chenail-Larcher, Brahim Mahmoudi, Naouel Moha, Quentin Stiévenart, Florent Avellaneda

Pubblicato 2026-05-25
📖 5 min di lettura🧠 Approfondimento

Autori originali: Zacharie Chenail-Larcher, Brahim Mahmoudi, Naouel Moha, Quentin Stiévenart, Florent Avellaneda

Articolo originale sotto licenza CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Questa è una spiegazione generata dall'IA dell'articolo qui sotto. Non è stata scritta né approvata dagli autori. Per precisione tecnica, consulta l'articolo originale. Leggi il disclaimer completo

Immagina di costruire una casa, ma invece di assumere un architetto umano, stai assumendo un robot super-intelligente, incredibilmente veloce, ma leggermente imprevedibile per aiutarti a progettare le stanze e scegliere i mobili. Questo robot è un Modello Linguistico di Grande Dimensione (LLM). È straordinario, ma se non gli dai istruzioni chiare o non controlli il suo lavoro, potrebbe costruire una porta dove dovrebbe esserci una finestra, o utilizzare materiali che si disgregano sotto la pioggia.

Questo articolo riguarda le "cattive abitudini" (o "code smell") che si verificano quando gli sviluppatori umani cercano di utilizzare questi robot all'interno del loro software. I ricercatori hanno scoperto che, proprio come una cucina disordinata può portare a cibo bruciato, un codice disordinato quando si interagisce con un'intelligenza artificiale può portare a software che si bloccano, costano troppo denaro o forniscono risposte errate.

Ecco una panoramica delle loro scoperte utilizzando semplici analogie:

1. Il Problema: "Le Cattive Abitudini del Robot"

I ricercatori hanno identificato 9 specifiche cattive abitudini che gli sviluppatori commettono quando parlano con questi robot AI. Li hanno raggruppati in tre categorie, come ordinare gli attrezzi in una cassetta degli attrezzi:

  • Le Abitudini "Strutturali" (Come poni la domanda):

    • Analogia: Immagina di chiedere a uno chef: "Preparami la cena", senza dirgli se vuoi vegetariano, piccante o se hai un'allergia alla frutta secca.
    • Lo Smell: Nessun Messaggio di Sistema. Gli sviluppatori spesso dimenticano di dare all'AI una "descrizione del lavoro" (un messaggio di sistema) che gli dica chi dovrebbe essere (ad esempio, "Sei un tutor di matematica disponibile"). Senza questo, il robot agisce come un bot generico chiacchierone invece che come uno specialista.
    • Lo Smell: Chiamate Anonime. Immagina di chiamare un ristorante senza dare il tuo nome. Se il cibo è cattivo, il ristorante non sa a chi richiamare. Gli sviluppatori spesso dimenticano di allegare un "ID utente" alla richiesta all'AI, rendendo impossibile tracciare chi ha causato un problema in seguito.
  • Le Abitudini "Dati" (Cosa invii e ricevi indietro):

    • Analogia: Chiedere a un robot di ordinare la tua posta, ma inviandogli una scatola enorme di posta spazzatura non aperta invece che solo le lettere.
    • Lo Smell: Nessuna Output Strutturato. Chiedi all'AI una lista di ingredienti in un formato specifico (come una lista JSON), ma non lo costringi a seguire quel formato. Potrebbe darti un paragrafo di testo invece. Il tuo software poi prova a leggere quel paragrafo come una lista e si blocca.
    • Lo Smell: Payload Visione Grezzo. Se chiedi all'AI di guardare una foto di un bug nel tuo codice, inviare l'intero screenshot 4K del tuo monitor è uno spreco. È come spedire un'intera biblioteca per chiedere informazioni su un solo libro. Dovresti ritagliare l'immagine sul solo bug prima.
  • Le Abitudini "Protocollo" (Le regole del gioco):

    • Analogia: Guidare un'auto senza impostare un limite di velocità o controllare quale modello di auto stai guidando, assumendo che sarà sempre la stessa.
    • Lo Smell: Nessun Blocco della Versione del Modello. Dici al robot: "Usa il modello 'GPT-4'". Ma l'azienda potrebbe aggiornare "GPT-4" domani a un robot completamente diverso. Il tuo codice si rompe perché il robot ha cambiato personalità. Devi bloccarlo su una versione specifica (come "GPT-4 di novembre 2024").
    • Lo Smell: Metriche Massime Illimitate. Chiedi al robot di scrivere una storia, ma non gli dici di fermarsi dopo 500 parole. Potrebbe continuare a scrivere per sempre, consumando tutto il tuo denaro e tempo.
    • Lo Smell: Temperatura Non Impostata. Questo controlla quanto il robot è "creativo" o "casuale". Se non lo imposti, il robot usa un'impostazione predefinita che potrebbe cambiare domani, facendo comportare il tuo software diversamente in giorni diversi.

2. La Soluzione: Il "Cane da Fiuto" (SpecDetect4LLM)

I ricercatori hanno costruito uno strumento chiamato SpecDetect4LLM. Pensa a questo come a un cane da fiuto che cammina attraverso il tuo codice.

  • Non esegue il codice; guarda solo le istruzioni (l'"analisi statica").
  • Annusa intorno per vedere se hai commesso una di quelle 9 cattive abitudini.
  • Se trova una cattiva abitudine, abbaia (la segnala) in modo che lo sviluppatore possa correggerla prima che il software vada in produzione.

3. I Risultati: Quanto è Brava la Cagna?

I ricercatori hanno testato questo cane da fiuto su 692 diversi progetti software (oltre 171.000 file di codice). Ecco cosa hanno scoperto:

  • Quanto spesso accadono queste cattive abitudini?

    • Il 73,5% dei progetti aveva almeno una di queste cattive abitudini. È come entrare in una casa e scoprire che 3 su 4 hanno un rubinetto che perde. È molto comune.
    • La cattiva abitudine più comune era non bloccare la versione del modello (usare un nome generico invece di uno specifico).
  • Quanto è bravo il cane da fiuto a trovarle?

    • Precisione (Accuratezza): Quando il cane abbaia, ha ragione il 91,3% delle volte. Raramente abbaia al lupo.
    • Recall (Completezza): Il cane trova circa il 71,8% delle cattive abitudini reali. Ne manca alcune, ma ne cattura la maggior parte.

4. Perché Questo è Importante?

L'articolo sostiene che, sebbene queste cattive abitudini non causino sempre il blocco immediato del software, sono come la ruggine su un'auto.

  • Rendono l'auto più difficile da riparare in seguito (Manutenibilità).
  • Rendono l'auto più lenta o costosa da gestire (Prestazioni).
  • Rendono l'auto imprevedibile nei giorni di pioggia (Affidabilità).
  • Rendono l'auto insicura se le condizioni stradali cambiano (Robustezza).

Riassunto

I ricercatori hanno creato un "menu" di 9 errori comuni che gli sviluppatori commettono quando usano l'AI, hanno costruito uno strumento per trovare automaticamente questi errori e hanno dimostrato che questi errori sono ovunque nel mondo del software. Il loro strumento è molto bravo a individuarli, aiutando gli sviluppatori a costruire software più sicuro, economico e affidabile quando utilizza l'AI.

Sommerso dagli articoli nel tuo campo?

Ricevi digest giornalieri degli articoli più recenti corrispondenti alle tue parole chiave di ricerca — con riassunti tecnici, nella tua lingua.

Prova Digest →