Intel libero el codigo fuente de ControlFlag un sistema de aprendizaje automático para detectar errores en el código

Intel dio a conocer mediante un anuncio los desarrollos relacionados con el proyecto de investigación ControlFlag, el cual está destinado a crear un sistema de aprendizaje automático para mejorar la calidad del código.

La herramienta se ha liberado bajo la licencia MIT y se destaca por permitir, a partir de un modelo entrenado sobre una gran cantidad de código existente, identificar diversos errores y anomalías en los textos fuente escritos en lenguajes de alto nivel como C/C ++.

El sistema es adecuado para detectar varios tipos de problemas en su código, desde detectar errores tipográficos y combinaciones incorrectas de tipos, hasta identificar comprobaciones faltantes para valores nulos en punteros y problemas con la memoria.

El sistema aprende por sí mismo 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.

Para que ControlFlag esté más disponible para la comunidad de desarrollo de software en general, Intel se complace en anunciar que ControlFlag ahora es de código abierto y se puede acceder a él en https://github.com/IntelLabs/control-flag . Nos complace brindarles a los desarrolladores la oportunidad de desarrollar en él y ver qué más se puede hacer con esta tecnología extremadamente valiosa e innovadora.

Desde su introducción, ControlFlag se ha probado en software de nivel de producción y en sistemas de software de código abierto ampliamente utilizados. Por ejemplo, el año pasado, ControlFlag identificó una anomalía de código en Client URL (cURL), un proyecto de software informático que transfiere datos utilizando varios protocolos de red más de mil millones de veces al día . Después de informar la anomalía al equipo de cURL, estuvieron de acuerdo con los hallazgos de ControlFlag y posteriormente parchearon su código.

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. El sistema también permite no solo identificar un error en la plantilla, sino también sugerir una solución. Por ejemplo, al analizar el fragmento de código «if (x=7) y= x;» el sistema ha determinado 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.

Los analizadores estáticos tradicionales detectarían un error de este tipo, pero, a diferencia de ellos, ControlFlag no aplica reglas listas para usar, en las que es difícil prever todas las opciones posibles, sino que parte de las estadísticas del uso de todo tipo de construcciones en una gran cantidad de proyectos.

Como experimento, al usar ControlFlag en el código fuente de la utilidad cURL, que a menudo se cita como un ejemplo de código probado y de alta calidad, los analizadores estáticos revelaron un error inadvertido al usar el elemento de estructura «s-> keepon», que tenía un tipo numérico, pero se comparó con el valor booleano TRUE.

En el código OpenSSL, además del problema mencionado anteriormente con «(s1==NULL) ∧ (s2==NULL)», también se detectaron anomalías en las expresiones «(-2 == rv)» que menos fue un error tipográfico.

También se informa que el uso de ControlFlag hizo posible identificar varios cientos de errores en software propietario no específico, lo que provocó fallas y problemas con la memoria.

Finalmente si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace. En cuanto a los que estén interesados en poder ver el código fuente, obtenerlo o clonarlo en un repositorio, pueden hacerlo desde el siguiente enlace.


El contenido del artículo se adhiere a nuestros principios de ética editorial. Para notificar un error pincha aquí.

Sé el primero en comentar

Deja tu comentario

Tu dirección de correo electrónico no será publicada.

*

*

  1. Responsable de los datos: AB Internet Networks 2008 SL
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.

bool(true)