La necesidad

Los errores son un hecho inevitable para el desarrollo de software. Cuanto más se tarda en encontrar un defecto en el ciclo de desarrollo, mayor es el costo para corregirlo. Si un defecto se encuentra después de la implementación, se ven afectados los clientes, y los desarrolladores gastan más tiempo en replicar el problema y, posteriormente, en entregar la corrección. Este proceso de error, análisis y corrección es lento y costoso.

La idea

Algunos patrones de la base de código de un proyecto de software tienen un riesgo mayor de introducir errores. Estos patrones se pueden aprender mediante un algoritmo de aprendizaje de clasificación para predecir la posibilidad de que un archivo tenga un error. Esto permite detectar el defecto antes, lo cual minimiza el costo para corregir los errores.

La solución

Se crean modelos de clasificación personalizados para proyectos de GitHub en función de los metadatos asociados con las publicaciones históricas. Cuando Code Defect AI descubre nuevas confirmaciones de los desarrolladores, predice si algún archivo modificado corre el riesgo de generar defectos. La justificación detrás de la predicción se presenta mediante explicaciones localmente interpretables independientes del modelo (LIME) para que los desarrolladores puedan confiar y aprender de la predicción.

Detalles técnicos para el experimento de Code Defect AI

El aprendizaje automático supervisado permite que los algoritmos predigan un resultado a partir de ejemplos históricos de pares de entrada y salida, es decir, datos etiquetados. El aprendizaje supervisado se denomina problema de clasificación si la variable de salida es una variable discreta. Algunos patrones de la base de código de un proyecto de software tienen un riesgo mayor de introducir errores. Por ejemplo, si un desarrollador nuevo realiza cambios en un archivo que históricamente tiene una mayor incidencia de errores, si una confirmación implica archivos en varios directorios o si la actualización de código se distribuye por varias regiones del archivo. Estos patrones se pueden aprender mediante un algoritmo de aprendizaje de clasificación para predecir la posibilidad de que un archivo en una confirmación tenga un error. Esto permite desplazar la detección de defectos a la izquierda y minimizar así el costo de la corrección de defectos.

Se crearon tres modelos de clasificación personalizados para tres proyectos de GitHub en función de los metadatos asociados con las confirmaciones históricas. Se crearon datos etiquetados para el modelo de entrenamiento con los metadatos recopilados del repositorio de GitHub. Cuando Code Defect AI descubre nuevas confirmaciones de los desarrolladores, obtiene los metadatos y los archivos de cada una de estas. Luego predice si alguno de los archivos de la confirmación conllevan el riesgo de tener un error utilizando el modelo específico del proyecto. Los modelos de aprendizaje automático tradicionales funcionan como cajas negras y la lógica detrás de la predicción del modelo no está disponible. Presentamos la lógica detrás de la predicción por medio de explicaciones localmente interpretables independientes del modelo (LIME) para que los usuarios adquieran más confianza en la predicción.

Recursos:

Proyectos relacionados con Code Defect AI

Explora más proyectos