Intel ha dado a conocer la liberación de la versión significativa de ControlFlag 1.0, el cual es un sistema de control de software que permite detectar errores y anomalías en el código fuente mediante un sistema de aprendizaje automático entrenado en una gran cantidad de código existente.
A diferencia de los analizadores estáticos tradicionales, ControlFlag no aplica reglas predefinidas, en las que es difícil prever todas las opciones posibles, sino que parte de las estadísticas de uso de todo tipo de construcciones de lenguaje en una gran cantidad de proyectos existentes.
Según la investigación, la búsqueda y eliminación de errores en el código se realiza con mayor frecuencia de forma manual y toma más del 50% del tiempo de trabajo de los desarrolladores.
La herramienta aprende a identificar y etiquetar estas opciones estilísticas y puede personalizar la identificación de errores y las recomendaciones de soluciones en función de sus conocimientos, lo que minimiza las caracterizaciones de código erróneo de ControlFlag que pueden ser simplemente una desviación estilística entre dos equipos de desarrolladores.
Sobre ControlFlag
El sistema se entrena mediante la construcción de un modelo estadístico de la matriz existente de código fuente abierto publicado en GitHub y repositorios públicos similares. En la etapa de entrenamiento, el sistema determina plantillas típicas para construir estructuras en el código y construye un árbol sintáctico de conexiones entre estas plantillas, reflejando el flujo de ejecución del código en el programa.
Como resultado, se forma un árbol de decisiones de referencia, que combina la experiencia de desarrollo de todos los textos fuente analizados. Se realiza un proceso similar de definición de patrones para el código bajo prueba, que se compara con un árbol de decisiones de referencia. Las grandes discrepancias con las ramas adyacentes indican una anomalía en el patrón que se está verificando.
De las características de la versión ControlFlag 1.0, se destacan el soporte completo para plantillas C y la capacidad de detectar anomalías en declaraciones condicionales «if».
Por ejemplo, al analizar el fragmento de código «if (x=7) y=x;» el sistema detectará que la construcción «variable==número» se usa generalmente en la instrucción «if» para comparar valores numéricos, por lo que la indicación «variable=número» en la instrucción «if» es probablemente causada por un error tipográfico.
El kit proporciona un script que permite descargar los repositorios de C disponibles en GitHub y usarlos para construir un modelo. También hay disponibles modelos listos para usar, lo que le permite comenzar a verificar el código de inmediato
El sistema es parte del proyecto Machine Programming Research (MPR) de Intel, cuyo objetivo principal es reducir el tiempo requerido para el desarrollo de software en 1000 veces debido a la automatización.
En particular, Intel está trabajando actualmente para entrenar a Controlflag para que corrija automáticamente los errores detectados. También en 2020, la compañía lanzó la herramienta MISIM, desarrollada en conjunto con los laboratorios del MIT, que puede estudiar fragmentos de código para comprender qué pretende hacer una parte del código. Está previsto que el sistema se utilice con el fin de ofrecer a los desarrolladores formas de mejorar la eficiencia del código.
«Se espera que la depuración cause aún más daño a los desarrolladores y la industria en su conjunto», dijo Intel. Anuncio … «Cuando se realiza por completo, ControlFlag puede ayudar a mitigar este desafío al automatizar la molestia del desarrollo de software, como las pruebas, el monitoreo y la depuración».
“La principal ventaja del enfoque sin supervisión de ControlFlag para el reconocimiento de patrones es que esencialmente puedes aprender a adaptarte al estilo del desarrollador. Debido a que el programa tiene una entrada limitada a las herramientas de control que necesita evaluar. ControlFlag puede identificar variaciones tipográficas en lenguajes de programación de la misma manera que los lectores pueden reconocer diferencias completas entre palabras y usar abreviaturas en inglés ”, escribe Intel.
Finalmente si estás interesado en poder conocer más al respecto sobre ControlFlag, debes saber que está escrito en C++ y es de código abierto bajo la licencia MIT y su código se aloja en GitHub.