← Últimos artículos
💻 computer science

SmellBench: Towards Fine-Grained Evaluation of Code Agents on Refactoring Tasks

Este artículo presenta SmellBench, un nuevo benchmark diseñado para evaluar agentes de código en tareas de refactorización mediante la inyección de "code smells" del mundo real, revelando que los modelos actuales con mejor desempeño tienen dificultades con la comprensión entre múltiples archivos y logran un éxito solo moderado en la eliminación de estos problemas de mantenibilidad.

Autores originales: Fake Lin, Binbin Hu, Xi Zhu, Ziwei Zhao, Zhi Zheng, Ziqi Liu, Zhiqiang Zhang, Jun Zhou, Tong Xu

Publicado 2026-06-05
📖 6 min de lectura🧠 Análisis profundo

Autores originales: Fake Lin, Binbin Hu, Xi Zhu, Ziwei Zhao, Zhi Zheng, Ziqi Liu, Zhiqiang Zhang, Jun Zhou, Tong Xu

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

La visión general: El problema de la "habitación desordenada"

Imagina que tienes un asistente robot muy inteligente (un Agente de Código) que puede escribir código, corregir errores y organizar archivos. Le pides que limpie una habitación desordenada (refactorizar código).

La mayoría de las pruebas para estos robots solo preguntan: "¿Moviste la silla para que se pueda pasar por la puerta?" Si el robot mueve la silla y tú puedes pasar, la prueba dice "¡Aprobado!".

Pero este artículo argumenta que esto no es suficiente. El robot puede haber movido la silla, pero al hacerlo, tiró una lámpara, dejó un montón de ropa en el suelo y bloqueó la ventana. La habitación funciona (puedes caminar), pero es un desastre para vivir a largo plazo. Esto es lo que los desarrolladores llaman "Code Smells" (olores de código): código tosco, desordenado o mal organizado que funciona hoy, pero que causará dolores de cabeza mañana.

SmellBench es una nueva prueba diseñada para ver si estos robots de IA realmente pueden limpiar el desorden sin empeorar las cosas, en lugar de simplemente comprobar si la puerta sigue abierta.


Cómo construyeron la prueba (La fábrica de "desorden controlado")

Los investigadores se dieron cuenta de que encontrar ejemplos reales de código desordenado es como intentar encontrar un grano de arena específico en una playa. Es difícil, y el desorden suele estar mezclado con otras cosas (como nuevas funciones o correcciones de errores).

Así que construyeron una fábrica para crear desorden perfectamente controlado:

  1. La habitación limpia: Comenzaron con 7 proyectos de Python famosos, limpios y bien organizados (como pandas o numpy). Piensa en estos como librerías prístinas y perfectamente organizadas.
  2. Inyectar el "olor": En lugar de esperar a que el desorden ocurriera naturalmente, utilizaron una IA para desordenar intencionalmente el código. Inyectaron 7 tipos específicos de "olores" (como una "God Class" que intenta hacer demasiadas cosas, o "Dead Code" que nunca se usa).
  3. La Verdad Fundamental (Ground Truth): Debido a que ellos crearon el desorden, saben exactamente cómo era la versión limpia antes de que la rompieran. Esta es su "Clave de respuestas".

El Resultado: Un conjunto de datos de 294 escenarios específicos de "desorden", que van desde lo fácil hasta lo muy difícil, cubriendo 7 tipos diferentes de fealdad de código.


Los 7 tipos de "Code Smells" (Los escenarios de la habitación desordenada)

El artículo se centra en 7 formas específicas en las que el código se desordena. Aquí es como se traducen a la vida cotidiana:

  1. Feature Envy (Envidia de características): Una persona (una función) que está constantemente pidiendo prestadas cosas de la casa de su vecino en lugar de usar las suyas. Analogía: Sigues pidiendo prestado el martillo de tu vecino porque no tienes uno, aunque tienes tu propia caja de herramientas.
  2. God Classes (Clases Dios): Una sola persona intentando hacer todos los trabajos de la empresa (cocinar, contabilidad, seguridad y recursos humanos). Analogía: Un conserje intentando arreglar la fontanería, enseñar matemáticas, hornear pan y todo a la vez.
  3. Data Clumps (Grupos de datos): Llevar el mismo grupo de objetos (llaves, billetera, teléfono) juntos a todas partes, incluso cuando solo necesitas uno. Analogía: Llevar una caja de herramientas completa solo para cambiar una bombilla.
  4. Shotgun Surgery (Cirugía de escopeta): Quieres cambiar algo pequeño (como el color de las paredes), pero tienes que ir a 10 habitaciones distintas para hacerlo. Analogía: Cambiar el precio de un producto requiere que actualices el recibo, el sitio web, la factura y la etiqueta de envío por separado.
  5. Dead Code (Código muerto): Muebles en una habitación en los que nadie se sienta ni los usa. Analogía: Una estantería llena de libros que leíste hace 10 años y que nunca vuelves a tocar.
  6. Interface Segregation (Segregación de interfaz): Un mando a distancia con 50 botones, pero que solo usas 3. Analogía: Un menú en un restaurante que te obliga a pedir un filete, una ensalada y un postre solo para conseguir un vaso de agua.
  7. Deep Inlining (Incrustación profunda): Una receta que dice "Haz el paso 1, que significa hacer el paso 2, que significa hacer el paso 3..." todo escrito en un párrafo gigante. Analogía: Un mapa donde las instrucciones están escritas dentro de las instrucciones, haciendo que sea imposible de seguir.

El Experimento: ¿Pueden los robots limpiar?

Los investigadores entregaron estos fragmentos de código desordenados a 2 agentes de IA populares (OpenHands y Qwen Code) impulsados por 6 "cerebros" diferentes (Modelos de Lenguaje Extensos como Claude, GPT y DeepSeek).

Las Reglas:

  • El IA tenía que encontrar el desorden.
  • El IA tenía que arreglar el desorden.
  • El IA tenía que asegurarse de que el código siguiera funcionando (pasara las pruebas).

Los Resultados (La parte sorprendente):
Incluso la mejor combinación de IA (Qwen Code + Claude Sonnet 4.5) solo obtuvo una puntuación del 50.34% en la eliminación de los olores.

  • La prueba de la "Puerta" (Corrección funcional): Los robots fueron buenos en esto. La mayoría mantuvo la "puerta abierta" (el código seguía ejecutándose). Pasaron las pruebas básicas el 80-90% de las veces.
  • La prueba de la "Habitación Limpia" (Calidad de la refactorización): Los robots fallaron aquí. A menudo arreglaban el problema inmediato pero dejaban la habitación desordenada. Tuvieron dificultades para ver el panorama general, especialmente cuando el desorden involucraba múltiples archivos (como el olor de "Shotgun Surgery").

Hallazgo clave: La IA es buena haciendo que el código funcione, pero actualmente es mala haciendo que el código sea bello y mantenible.


Por qué esto es importante

El artículo concluye que no podemos limitarnos a preguntar a la IA: "¿Se ejecutó el código?". Necesitamos preguntar: "¿Es el código limpio?".

Introdujeron una nueva forma de calificar a la IA usando un "IA Juez" que observa:

  1. ¿Pasó las pruebas? (¿Se abre la puerta?)
  2. ¿Encontró el lugar correcto para arreglarlo? (¿Miró en la habitación correcta?)
  3. ¿Es el código realmente mejor? (¿Está la habitación ordenada?)

La conclusión final: Los agentes de IA actuales son como pasantes entusiastas que pueden mover muebles pero a menudo dejan un rastro de polvo. Están mejorando, pero aún les queda un largo camino por recorrer antes de que se les pueda confiar la tarea de "refactorizar" (limpiar) profesionalmente sistemas de software complejos por sí solos.

¿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.

Probar Digest →