Intel a publié le code source de ControlFlag, un système d'apprentissage automatique pour détecter les erreurs dans le code

Intel dévoilé à travers une publicité développements liés au projet de recherche ControlFlag, qui vise à créer un système d'apprentissage automatique pour améliorer la qualité du code.

L'outil a été publié sous la licence MIT et il se distingue en permettant, sur la base d'un modèle entraîné sur une grande quantité de code existant, d'identifier diverses erreurs et anomalies dans des textes sources écrits dans des langages de haut niveau tels que C/C++.

Le système il est adapté pour détecter différents types de problèmes dans votre code, de la détection des erreurs typographiques et des combinaisons de types incorrectes à l'identification des contrôles manquants pour les valeurs nulles dans les pointeurs et des problèmes de mémoire.

Le système apprend par lui-même en construisant un modèle statistique à partir du tableau existant de code open source publié sur GitHub et des référentiels publics similaires. Au stade de la formation, le système détermine des modèles types pour construire des structures dans le code et construire un arbre syntaxique de connexions entre ces modèles, reflétant le flux d'exécution du code dans le programme. En conséquence, un arbre de décision de référence est formé, qui combine l'expérience de développement de tous les textes sources analysés.

Pour rendre ControlFlag plus accessible à l'ensemble de la communauté de développement de logiciels, Intel a le plaisir d'annoncer que ControlFlag est désormais open source et accessible à l'adresse https://github.com/IntelLabs/control-flag. Nous sommes heureux de donner aux développeurs la possibilité de développer dessus et de voir ce qu'il est possible de faire d'autre avec cette technologie extrêmement précieuse et innovante.

Depuis son introduction, ControlFlag a été testé dans des logiciels de production et des systèmes logiciels open source largement utilisés. Par exemple, l'année dernière, ControlFlag a identifié une anomalie de code dans Client URL (cURL), un projet de logiciel informatique qui transfère des données à l'aide de divers protocoles réseau plus d'un milliard de fois par jour. Après avoir signalé l'anomalie à l'équipe cURL, ils ont accepté les conclusions de ControlFlag et ont par la suite corrigé leur code.

Un processus similaire de définition de modèles est effectué pour le code sous test, qui est comparé à un arbre de décision de référence. De grandes divergences avec les branches adjacentes indiquent une anomalie dans le modèle qui est en cours de vérification. Le système permet également non seulement d'identifier une erreur dans le modèle, mais aussi de proposer une solution. Par exemple, lors de l'analyse de l'extrait de code "if (x = 7) y = x;" le système a déterminé que la construction « variable == nombre » est généralement utilisée dans l'énoncé « si » pour comparer des valeurs numériques, donc l'indication « variable = nombre » dans l'énoncé « si » est probablement causée par une erreur typographique.

Les analyseurs statiques traditionnels détecteraient une telle erreur, mais, contrairement à eux, ControlFlag n'applique pas de règles prêtes à l'emploi, dans lesquelles il est difficile de prévoir toutes les options possibles, mais part plutôt des statistiques d'utilisation de toutes sortes de constructions dans un grand nombre de projets.

A titre d'expérimentation, lors de l'utilisation de ControlFlag dans le code source de l'utilitaire cURL, souvent est cité en exemple de code éprouvé et de haute qualité, des analyseurs statiques a révélé un bug par inadvertance lors de l'utilisation de l'élément de structure "s-> keepon", qui avait un type numérique, mais a été comparé à la valeur booléenne TRUE.

Dans le code OpenSSL, en plus du problème susmentionné avec "(s1 == NULL) ∧ (s2 == NULL)", des anomalies ont également été détectées dans les expressions "(-2 == rv)" qui était au moins une faute de frappe .

Il est également rapporté que l'utilisation de ControlFlag a permis d'identifier plusieurs centaines de bugs dans des logiciels propriétaires non spécifiques, entraînant des plantages et des problèmes de mémoire.

Enfin si vous souhaitez en savoir plus, vous pouvez vérifier les détails dans le lien suivant. Quant à ceux qui souhaitent pouvoir voir le code source, l'obtenir ou le cloner dans un dépôt, ils peuvent le faire depuis le lien suivant.


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données : AB Internet Networks 2008 SL
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.