Beyond Strict Rules: Assessing the Effectiveness of Large Language Models for Code Smell Detection
Este artículo evalúa la efectividad de cuatro modelos de lenguaje de gran tamaño en la detección de nueve malos olores de código en 30 proyectos de Java, revelando que, si bien sobresalen en la identificación de malos olores estructuralmente sencillos, una estrategia híbrida que combina los LLM con herramientas de análisis estático ofrece un rendimiento superior para la mayoría de los malos olores, aunque el enfoque óptimo depende en última instancia de si se prioriza la precisión o la exhaustividad.
Artículo original bajo licencia CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Esta es una explicación generada por IA del artículo a continuación. No ha sido escrita ni avalada por los autores. Para mayor precisión técnica, consulte el artículo original. Leer descargo de responsabilidad completo
El panorama general: Encontrando "malos hábitos" en el código
Imagina una biblioteca masiva de libros (código de software). Con el tiempo, algunos libros se vuelven desordenados. Pueden tener capítulos demasiado largos, páginas que repiten la misma historia o personajes que dependen demasiado de otros para hacer su trabajo. En la ingeniería de software, estos patrones desordenados se llaman Code Smells (olores de código). No son errores que hacen que el programa falle, sino que son como "malos hábitos" que hacen que el código sea difícil de arreglar, actualizar o entender más adelante.
Durante años, hemos utilizado Herramientas de Análisis Estático (llamémoslas "Los Libros de Reglas"). Los Libros de Reglas son estrictos; siguen una lista de verificación. Si un método tiene más de 50 líneas, el Libro de Reglas dice: "¡Eso es un Método Largo!". Es rápido, pero puede ser un poco tonto. Podría señalar un método largo que es perfectamente aceptable solo porque es largo, o pasar por alto un método corto que parece inocente pero que es desordenado.
Recientemente, los Modelos de Lenguaje Extensos o LLMs (llamémoslos "Los Pasantes Inteligentes") se han vuelto famosos. Estos son sistemas de IA que pueden leer y entender el código casi como un humano. La gran pregunta que plantea este artículo es: ¿Pueden estos Pasantes Inteligentes encontrar los malos hábitos mejor que los estrictos Libros de Reglas?
El experimento: Una prueba de sabor con 30 bibliotecas
Para averiguarlo, los investigadores organizaron una enorme prueba de sabor.
- El Menú: Eligieron 30 proyectos de software Java populares (como elegir 30 tipos diferentes de restaurantes).
- Los Platos del Menú: Buscaron 9 tipos específicos de malos hábitos (Code Smells), tales como:
- Long Method (Método Largo): Una función que intenta hacer demasiado.
- Large Class (Clase Grande): Un archivo que está inflado con demasiadas responsabilidades.
- Feature Envy (Envidia de Funcionalidad): Una función que pasa más tiempo trabajando con los datos de otra persona que con los propios.
- Los Jueces: No dejaron que la IA simplemente adivinara. Pidieron a 76 desarrolladores humanos (estudiantes con buena formación) que inspeccionaran manualmente 268 fragmentos de código y decidieran: "¿Es esto realmente un mal hábito o está bien?". Esto creó la "Verdad Fundamental" (la clave de respuestas oficial).
- Los Concursantes: Pusieron a competir a 4 diferentes Pasantes Inteligentes (DeepSeek-R1, GPT-5 mini, Llama-3.3 y Qwen2.5-Code) contra los Libros de Reglas (herramientas tradicionales como JDeodorant y PMD).
Los Resultados: ¿Quién ganó?
Los resultados fueron una mezcla de "Los Pasantes son increíbles" y "Los Libros de Reglas aún tienen su lugar".
1. Lo Fácil: Los Pasantes Brillan
Para los olores que son fáciles de contar o medir, los Pasantes Inteligentes fueron fantásticos.
- Analogía: Si el mal hábito es "Este libro tiene 500 páginas", los Pasantes pueden contar las páginas tan bien como el Libro de Reglas, pero entienden mejor el contexto.
- Los Ganadores: Para olores como Long Method y Large Class, los modelos de IA funcionaron muy bien, a menudo igualando o superando a las herramientas estrictas.
2. Lo Difícil: Depende del Pasante
Para los olores que requieren entender por qué el código se escribió de cierta manera, los resultados fueron mixtos.
- Analogía: Imagina a un personaje en una historia que habla demasiado con un vecino. ¿Es eso "Feature Envy" (malo) o simplemente buen trabajo en equipo? El Libro de Reglas podría pasarlo por alto por completo. Un Pasante Inteligente podría decir: "¡Sí, eso es malo!", mientras que otro dice: "No, eso está bien".
- El Hallazgo: Diferentes modelos de IA fueron buenos en diferentes cosas. Por ejemplo, un modelo fue excelente detectando "Feature Envy", mientras que otro fue mejor en "Intensive Coupling". No hubo un único "Súper IA" que fuera perfecto en todo.
3. Lo Más Difícil: Ambos Batallan
Para los olores más subjetivos, como Refused Bequest (una clase hija que ignora las reglas de su padre) o Shotgun Surgery (un pequeño cambio que rompe cosas en todas partes), tanto los Libros de Reglas como los Pasantes Inteligentes tuvieron dificultades.
- Analogía: Estos son como la sutil incomodidad social en un chat grupal. Es difícil definir exactamente cuándo se convierte en un problema. Incluso la IA más inteligente y el libro de reglas más estricto tuvieron dificultades para ponerse de acuerdo en estos casos.
El Arma Secreta: El "Comité de Votación"
Los investigadores probaron un truco ingenioso. En lugar de pedirle a solo una IA o a un solo Libro de Reglas, les pidieron a todos (los 4 Pasantes Inteligentes + 2 Libros de Reglas) que votaran sobre cada pieza de código. Si al menos 3 de 6 decían: "Esto es un olor", lo contaban como un olor.
- El Resultado: Este enfoque de "Comité" fue el mejor para encontrar todo (Alta Sensibilidad o Recall). Detectó casi todos los malos hábitos, incluso los más complicados.
- El Problema: Debido a que era tan entusiasta por detectar malos hábitos, también marcó algunos códigos limpios como "con olor" (Falsos Positivos).
- La Lección: Si quieres asegurarte de no perderte ningún problema, usa el Comité. Si quieres evitar molestar a tu equipo con falsas alarmas, elige al experto específico para ese trabajo determinado.
La Conclusión
- Para problemas estructurales simples (como código que es demasiado largo o demasiado grande), la IA es una herramienta poderosa que funciona tan bien como, o mejor que, las herramientas tradicionales.
- Para problemas complejos y dependientes del contexto, las herramientas especializadas o modelos de IA específicos siguen siendo mejores que un enfoque general de "talla única".
- La Mejor Estrategia: Depende de lo que valores.
- Si buscas seguridad (encontrar todos los problemas posibles), combina la IA con las herramientas (El Comité).
- Si buscas precisión (evitar falsas alarmas), elige la herramienta o la IA específica que sea mejor para ese tipo de olor en particular.
En resumen, los Pasantes Inteligentes están listos para ayudar, pero funcionan mejor cuando sabes a qué Pasante pedirle cada tarea, o cuando los dejas trabajar junto con los Libros de Reglas de la vieja escuela.
¿Ahogado en artículos de tu campo?
Recibe resúmenes diarios de los artículos más novedosos que coincidan con tus palabras clave de investigación — con resúmenes técnicos, en tu idioma.