Logotipo de Parasoft

¡Descubre GoogleTest, con certificación TÜV y la tecnología Agentic AI para pruebas de C/C++!
Obtenga los detalles »

Fondo geométrico con toques de azul y verde.
Imagen de portada del informe técnico

White Paper

Comparación de soluciones para infracciones de análisis estático: Parasoft vs. GitHub Copilot

Eche un vistazo al estudio a continuación.

Resumen del estudio

Este estudio evalúa cómo las plantillas de indicaciones de GitHub Copilot y Parasoft generan correcciones de código para las violaciones de análisis estático detectadas por Parasoft C / C ++testAmbas herramientas utilizaron GPT-4o, con correcciones evaluadas utilizando GPT-4o-2024-08-06 para comparaciones por pares.

Los resultados muestran que las indicaciones de Parasoft superaron significativamente a GitHub Copilot: con preguntas de razonamiento, Parasoft superó a Copilot en el 64.45% de los casos, empató en el 20.5% y tuvo un rendimiento inferior en el 15.05%. Las indicaciones simples, sin razonamiento, superaron a Copilot en el 57.16% de los casos.

El análisis manual sugiere que las indicaciones de Parasoft producen soluciones más completas y sólidas a través de la documentación de reglas y el razonamiento en cadena de pensamiento.

Resultados de la comparación de rendimiento

GitHub Copilot vs. C++test con razonamiento

Ratio de victorias Tasa de empate Tasa de pérdida
Copiloto de GitHub 0.150895 0.204604 0.644501
Prueba de C++ con preguntas de razonamiento 0.644501 0.204604 0.150895

GitHub Copilot vs C++test sin razonamiento

Ratio de victorias Tasa de empate Tasa de pérdida
Copiloto de GitHub 0.199488 0.2289 0.571611
Prueba de C++ sin preguntas de razonamiento 0.571611 0.2289 0.199488

Tasas de victorias por pares

Copiloto de GitHub Prueba de C++ con razonamiento Prueba de C++ sin razonamiento
Copiloto de GitHub - 0.150895 0.199488
Prueba de C++ con razonamiento 0.644501 - 0.313433
Prueba de C++ sin razonamiento 0.571611 0.186567 -
Icono de prueba de C/C++ en una lupa

La visualización demuestra claramente el rendimiento superior de Parasoft C++test en ambos enfoques de indicaciones:

  • Prueba de C++ sin razonamiento logró un porcentaje de victorias del 57.9% contra Copilot, con un 22.9% de empates y un 19.9% de derrotas.
  • Prueba de C++ con razonamiento Tuvo un rendimiento aún mejor con un 64.5% de tasa de victorias, un 20.5% de empates y solo un 15.1% de derrotas.
  • El enfoque basado en el razonamiento muestra una mejora de aproximadamente 6.6 puntos porcentuales en la tasa de éxito con respecto a las indicaciones simples.

En ambas configuraciones, C++test gana con más frecuencia que empata o pierde en conjunto, lo que demuestra una superioridad constante en la calidad de las correcciones.

Principales Conclusiones

Este análisis demuestra que las correcciones obtenidas con las indicaciones de Parasoft obtienen sistemáticamente mejores resultados que las de GitHub Copilot. Se observa un rendimiento tanto para las variantes de indicaciones simples como para las de razonamiento, siendo estas últimas ligeramente mejores.

La inspección manual de los datos de muestra reveló que las correcciones generadas con las indicaciones de Parasoft suelen ser más completas (como solucionar todas las instancias de un problema en líneas adyacentes), más sólidas (implementan un mejor manejo de errores) y se ajustan a las prácticas de codificación estándar.

Se plantea la hipótesis de que el rendimiento superior se debe a dos factores clave en el diseño del sistema de Parasoft:

  • Inclusión de documentación de reglas: Los avisos incorporan la documentación completa de las reglas de codificación, lo que proporciona al modelo un contexto explícito sobre qué constituye una violación y cómo abordarla adecuadamente.
  • Aplicación del razonamiento en cadena de pensamiento: Tanto las preguntas de razonamiento como el diseño estructural de indicaciones simples promueven el análisis sistemático del problema, estimulando al modelo a pensar en el problema metódicamente antes de generar soluciones.

Estos elementos trabajan juntos para mejorar las capacidades de generación de correcciones del modelo, lo que da como resultado correcciones de código más confiables y completas.

Limitaciones de la investigación

Este estudio reconoce varias limitaciones metodológicas:

  1. Limitación del alcance. El análisis se limitó a las infracciones producidas por Parasoft C/C++test, y solo se analizaron las infracciones dentro de los cuerpos de las funciones. Las infracciones fuera de los cuerpos de las funciones no se incluyeron en este análisis.
  2. Sesgo del contexto de evaluación. Las indicaciones de clasificación solo incluían el cuerpo de la función, sin otro código relevante, lo que proporcionaba la misma información limitada que la indicación de corrección de Parasoft. Sin embargo, Copilot utiliza el contexto del archivo completo (o casi completo). En los casos excepcionales en que las plantillas de indicaciones de Parasoft indican que una infracción es un falso positivo, pero el modelo carece de información para corregirla, mientras que el contexto más amplio de Copilot permite una evaluación adecuada, el modelo de clasificación con datos limitados podría inclinarse a coincidir con la evaluación de Parasoft.
Equipo de desarrolladores

¿Listo para sumergirte más profundamente?

Obtenga el documento técnico completo