GitHub AI & ML

ReviewBench: Un benchmark abierto para la revisión de código de IA

Estamos lanzando ReviewBench, un benchmark para agentes de revisión de código construido sobre solicitudes de pull de GitHub representativas, verdad material de múltiples fuentes, evaluación calibrada y métricas…

Decorative header image with a Copilot logo and the phrase 'Branching Out_'
Fuente de la imagen · GitHub AI & ML

La revisión de código agente se está convirtiendo en una parte esencial de cómo ocurre el desarrollo. Le ayuda a inspeccionar los pull requests, detectar problemas y decidir qué merece atención antes de que el código sea entregado.

Pero la calidad de los revisores de IA existentes puede ser difícil de medir, y es necesario conocer las fortalezas de un revisor antes de saber si le ayudará. Algunos revisores identifican más problemas, otros generan menos ruido, y algunos son más eficaces al detectar problemas críticos, mientras que otros presentan mejoras menores. Es posible que necesite una revisión de código para realizar diferentes tareas dentro de su flujo de trabajo.

Eso hace que sea importante entender cómo los revisores realmente comparan: qué sistemas diferentes detectan, qué pasan por alto y las compensaciones que toman. Un buen punto de referencia para la revisión de código debe reflejar la diversidad de los pull requests reales, capturar un amplio conjunto de hallazgos de revisión y soportar desglose significativo según gravedad, categoría y preferencias de precisión-recall. Para los equipos que desarrollan agentes de revisión de código, el benchmark también debe proporcionar una señal sin conexión que rastree de manera confiable si los cambios podrían mejorar la experiencia en producción. Los benchmarks existentes a menudo realizan compromisos entre la calidad de las etiquetas, la cobertura y cuán bien representan la revisión de código en el mundo real, dejando un vacío para una metodología de evaluación rigurosa y reproductible que combine estas aspectos.

Construimos ReviewBench, un nuevo benchmark de revisión de código sin conexión, para abordar ese vacío, y está disponible para que lo utilice hoy. Se basa en el lenguaje, el tamaño del repositorio y la distribución de tamaños de los pull requests, modelado a partir de más de 100 millones de pull requests reales en GitHub. Utiliza un conjunto dorado de múltiples fuentes y una rúbrica de evaluación consistente, y ha sido validado independientemente por ingenieros senior. De igual importancia, con la ayuda de ReviewBench, nuestra evaluación sin conexión del revisión de código CCR de Copilot se ha vuelto más efectiva al anticipar la dirección de los experimentos de producción, dándonos mayor confianza en que las mejoras medidas reflejan ganancias significativas para los usuarios.

En este artículo, analizaremos cómo se construye ReviewBench, cómo establece una verdad objetiva y una puntuación confiables, y cómo integrar su propio sistema de revisión de código y presentar los resultados.

Lo que construimos

Una evaluación realista y completa para los agentes de revisión de código de IA

103.9M

Solicitudes de pull en GitHub

Analice las distribuciones por idioma, tamaño del repositorio y forma de cambio.

Corpus de referencia representativo

219 solicitudes de pull en 19 idiomas, alineadas con las distribuciones de GitHub, mientras se preservan los casos de revisión sustantiva.

Conjunto dorado de múltiples fuentes

  • Revisores humanos
  • LLM de Frontier
  • Análisis estático

Hallazgos estructurados

Cada hallazgo está etiquetado según su severidad y categoría, lo que permite presentar segmentos personalizados para el usuario.

Gravedad

  • Crítico
  • Mediano
  • Bajo

Categoría

  • Corrección
  • Seguridad
  • Confiabilidad
  • Maintenibilidad
  • Pruebas
  • ......

Métricas de evaluación

Cuatro métricas miden tanto los problemas conocidos como los recién descubiertos.

  • Precisión fundamentada
  • Recuperación básica
  • Precisión aumentada
  • Recordación aumentada

Evaluación objetiva

Mide la mejora y compara entre los agentes de manera objetiva. Ayuda a los usuarios a elegir al revisor que mejor se adapte a sus necesidades.

Cómo lo mantenemos confiable

Una cadena auditable desde la rúbrica hasta la validación por expertos y los controles de producción

Rúbrica publicada

Un estándar explícito para todos los hallazgos.

Conjunto de desarrollo etiquetado por humanos

Ingenieros senior establecen la verdad fundamental.

Mediadora calibrada

Alineado con el juicio humano.

Etiquetado uniforme

Mismo estándar en todas las fuentes.

Acuerdo publicado

Auditoría experta de la calidad del punto de referencia.

Finalidad auditable de extremo a extremo

96.6% de acuerdo

Ingenieros senior etiquetaron de forma independiente los valores verdaderos dorados antes de su lanzamiento.

Señales fuera de línea que anticipan la producción

El movimiento del benchmark se verifica mediante experimentos en línea.

  • Las mejoras suelen aparecer en línea
  • Las regresiones también suelen aparecer en línea

Cómo funciona ReviewBench

Nuestro benchmark se basa en cinco principios:

1. Peticiones de pull representativas, no un conjunto de demostración

Analizamos 103.9 millones de solicitudes de pull en GitHub para caracterizar la distribución en el mundo real de las cargas de trabajo de revisión de código. ReviewBench contiene 219 solicitudes de pull de 187 repositorios públicos de código abierto licenciados, que abarcan 19 idiomas, y sus distribuciones de idioma y tamaño de repositorio coinciden estrechamente con la distribución general de GitHub. El conjunto completo de datos del benchmark está disponible públicamente.

Hacemos un ajuste deliberado en esta distribución: mientras que el lenguaje y el tamaño del repositorio reflejan directamente a GitHub, el tamaño de los pull requests se pondera hacia la parte central y posterior que puede ser revisada. Esto reduce la representación excesiva de cambios pequeños y de un solo archivo, mientras se preservan los pull requests más sustanciales con múltiples archivos, donde la calidad de la revisión es lo más importante.

Vista rápida del corpus:

2. Descubrimiento de la verdad amplia, juzgado independientemente

Ningún revisor individual, ya sea humano o modelo, puede identificar todo lo que vale la pena encontrar en un pull request. Para crear un conjunto de referencia más amplio y confiable para los hallazgos de verdad fundamental, seguimos un proceso en tres etapas:

  • Reunir los hallazgos de los candidatos desde diversas fuentes. Recopilamos los hallazgos de revisores humanos reales, problemas inferidos de los commits de seguimiento del autor, herramientas de análisis determinista y múltiples LLMs de vanguardia entre diferentes familias de modelos.
  • Deduplica los hallazgos que se superponen desde un punto de vista semántico. Fusionamos los hallazgos que identifican el mismo problema subyacente, ampliando la cobertura sin permitir que los productores lleguen a un acuerdo para inflar artificialmente el conjunto de resultados válidos o hacerlo dependiente de las limitaciones de alguna sola fuente.
  • Valide los hallazgos bajo un rúbrica compartida. La fuente de un hallazgo no determina si es correcto: un hallazgo solo cuenta como positivo verdadero si es cierto, relevante y no trivial. Utilizamos Claude Sonnet 5 como el evaluador del LLM, aplicando una rúbrica de evaluación consistente en todas las presentaciones. Para transparencia y reproducibilidad, publicamos tanto la rúbrica de evaluación como el juez que la aplica.

3. Métricas que miden tanto los problemas conocidos como los recién descubiertos

La mayoría de los benchmarks reportan precisión y recall en relación con un conjunto fijo de datos “oro”. ReviewBench reporta seis métricas en dos familias:

  • La precisión, el recall y la puntuación F1 basados en datos, utilizan únicamente las etiquetas de oro existentes. Estos proporcionan una comparación estricta, tipo manzana a manzana: de los problemas que ya conocemos, ¿cuántos encontró el agente y qué porcentaje de sus hallazgos coincidía con un problema conocido?
  • La precisión aumentada, el recall y la puntuación F1 también evalúan hallazgos que no coinciden con nada en el conjunto de referencia. El juez determina independientemente si esos hallazgos no coincidentes son falsos positivos o verdaderos positivos, permitiendo que el revisor reciba crédito por problemas válidos que ningún productor del conjunto de referencia ha mencionado.

Esa distinción se vuelve aún más importante a medida que los agentes de revisión se vuelven más capaces. Un conjunto fijo de criterios inevitablemente se vuelve incompleto, ya que los sistemas descubren problemas que sus creadores no anticiparon. Las métricas ampliadas permiten que ReviewBench reconozca ese comportamiento en lugar de penalizarlo automáticamente. Dado que la recordación ampliada expande el denominador según lo que cada agente descubre, utilizamos la recordación real como comparación cruz-sistema principal y las métricas ampliadas como diagnóstico adicional por sistema.

4. Evaluación configurable para diferentes preferencias de revisión

No existe una única experiencia de revisión óptima para todos. Algunos desarrolladores podrían querer centrarse únicamente en los problemas críticos, mientras que otros valoran también los hallazgos de menor gravedad. Algunos prefieren una cobertura más amplia, mientras que otros priorizan la precisión y el mínimo ruido. Otros podrían tener necesidades especializadas, como revisiones enfocadas en seguridad o privacidad.

ReviewBench permite segmentar los resultados según la severidad y la categoría, mientras que la precisión y el recall capturan diferentes preferencias de funcionamiento. Los usuarios también pueden ajustar β en la puntuación Fβ para dar más peso al recall para una cobertura más amplia o a la precisión para un menor ruido. A medida que estos preferencias cambian, la clasificación se reordena correspondientemente, ayudando a los usuarios a identificar los sistemas que mejor se adaptan a sus prioridades de revisión.

5. Auditado internamente y evaluado de manera reproducible

Antes del lanzamiento, pedimos a ingenieros senior que no participaron en la creación del conjunto de datos del benchmark que volvieran a etiquetar independientemente cada hallazgo de verdad desde cero. Sus juicios de verdad/falsidad positiva coincidieron con ReviewBench el 96.6% de las veces. Versionamos el conjunto de datos del benchmark, los jueces y los comparadores utilizados en todas las evaluaciones, de modo que los resultados puedan compararse bajo la misma configuración de benchmark y volver a validarse cuando el benchmark cambie. También publicamos la metodología de validación, las medidas de acuerdo y las amenazas conocidas para la validez, de modo que los lectores puedan ver cómo se evalúa la calidad del benchmark y dónde persiste la incertidumbre.

Explorar ReviewBench

La versión preliminar de investigación de ReviewBench está ahora disponible a través del sitio web de ReviewBench, donde se puede explorar el benchmark completo, comparar los agentes de revisión de código y utilizar el propio agente para evaluar e iterar.

Con ReviewBench, puedes:

  • Explora el completo conjunto de datos del benchmark. El conjunto de datos completo de ReviewBench está disponible públicamente, incluyendo las solicitudes de pull, los hallazgos, las etiquetas, la severidad y las anotaciones de categoría. Esto permite que insperes exactamente qué sistemas se evalúan y reproduzcas los resultados del benchmark.
  • Compara los sistemas en el tablero de clasificación. Los resultados obtenidos por los agentes de revisión de código evaluada, utilizando toda la información del benchmark, se publican en un tablero común, con información sobre rendimiento general, gravedad, categoría y diferentes preferencias de precisión-recall.
  • Trae tu propio agente y participa en la prueba de ascenso de colinas. El conjunto completo de datos del benchmark, la metodología de evaluación, el prompt para el juez del LLM, la configuración del modelo del juez y el runner de autoservicio están disponibles públicamente, así que puedes evaluar tu propio agente de revisión de código, examinar sus fortalezas y debilidades, y iterar con la misma configuración de benchmark.

Cómo hemos utilizado ReviewBench

Hemos utilizado ReviewBench para evaluar la revisión de código de Copilot (CCR) en sucesivas iteraciones, lo que nos permite medir el progreso de manera consistente, detectar regresiones y priorizar los cambios prometedores. Con el tiempo, esto nos ha ayudado a mejorar el producto. Uno de los beneficios más valiosos de ReviewBench es que proporciona una señal temprana sin conexión sobre cómo un cambio en el producto probablemente se desempeñará en producción. En los experimentos evaluados con ReviewBench antes del testing A/B, los cambios sin conexión han señalado consistentemente la misma dirección que lo que observamos más tarde en producción.

Un experimento reciente de nivel ligero proporciona un ejemplo concreto de este patrón más amplio. Introdujimos una revisión de conjunto de múltiples modelos que combina varias ejecuciones independientes de modelos en una única revisión, en lugar de depender de una sola ejecución. ReviewBench predice mayor precisión, recall y volumen de comentarios, además de un menor costo por revisión.

Para comparar los resultados fuera de línea y los del entorno de producción, utilizamos los señales en línea correspondientes. La tasa de atención, nuestra contraparte en línea a la precisión, es el porcentaje de comentarios del CCR que un LLM determina como motivo para que un desarrollador realice un cambio de código correspondiente, basándose en el dif, el hilo, las reacciones, el estado de resolución y el código después de la revisión. Para el recordatorio, medimos cuánta revisión humana adicional todavía es necesaria.

El test A/B en línea se movió en la misma dirección que predijó ReviewBench: la tasa de abordamiento (precisión) aumentó un 8.0 %, el recall aumentó un 13.6 %, y el volumen de comentarios aumentó un 61 %, mientras que el costo por revisión disminuyó un 8.0 %, todo en relación con el control de producción.

Sin embargo, el volumen de los comentarios por sí solo no refleja la calidad de los mismos. Los hallazgos más críticos significan algo muy diferente de los comentarios de baja severidad. La evaluación del nivel de severidad de ReviewBench también lo capturó: predijo un aumento del 227% en los comentarios críticos, en comparación con el 262% en línea, junto con un cambio más amplio hacia comentarios más moderados y menos comentarios de baja calidad.

Esto nos proporciona una señal rápida y repetible antes de ejecutar experimentos de producción. Los experimentos en línea siguen siendo la medida definitiva del impacto del usuario, pero ReviewBench nos da más confianza en cuanto a qué cambios vale la pena implementar.

Cómo enviar su propia ejecución

  1. Iniciar sesión con GitHub en el sitio web ReviewBench.
  2. Regístrese como su agente. Proporcione una imagen de contenedor, su configuración y la clave de su modelo. Nosotros nos encargamos del juez.
  3. Prueba el modelo en el conjunto de pruebas. Ejecuta el entrenamiento contra un conjunto de pruebas de 25-PR con detalles por PR y repite el proceso mientras ajustas la configuración.
  4. Realiza una ejecución final. Cuando estés listo, ejecuta todo el conjunto de 219 pull requests (tres rondas), evaluados por el mismo juez que para todas las demás entradas.
  5. Publicar en el tablero de clasificación. Tus puntuaciones permanecen privadas hasta que un mantenedor revisa y aprueba la entrada. Las puntuaciones se publican en el tablero de clasificación solo si superan la puntuación actual del agente en el tablero, o si esta es la primera entrada del agente en el tablero de clasificación.

Les invitamos a explorar ReviewBench, evaluar su propio sistema, desafiar nuestras suposiciones y ayudarnos a mejorar el benchmark. Estamos entusiasmados por colaborar con investigadores y profesionales para hacer que la evaluación de revisiones de código sea más abierta, confiable y útil—y, en última instancia, ayudar a avanzar las revisiones de código de IA.

Agradecimientos

ReviewBench fue un esfuerzo en equipo entre GitHub y Microsoft. Estamos agradecidos con los investigadores y ingenieros que lo crearon: aquellos que diseñaron la metodología, seleccionaron los pull requests, construyeron el conjunto de pruebas y la cadena de evaluación, y lograron que el benchmark pueda ser ejecutado por cualquiera.

El artículo ReviewBench: Un benchmark abierto para la revisión de código de IA apareció por primera vez en El Blog de GitHub.

Fuente original

GitHub AI & ML

Notas sobre el contenido

La publicación original y los derechos pertenecen a la fuente.

Traducción automática · Consulte el original