Réflexions sur le Machine Learning appliqué au code

machine learning

Je vais présenter dans cet article le potentiel du Machine Learning sur des données textuelles techniques et plus particulièrement le code applicatif.

État de l’art du Machine Learning

Dans tout projet informatique qui se respecte, la qualité et la maintenabilité du code applicatif sont des notions capitales pour la pérennité des différentes solutions que nous sommes amenés à développer. Pour y parvenir, nous mettons en place des bonnes pratiques. Notamment sur les commentaires, le nommage des variables, entre autres, que nous validons en pair review. Nous utilisons également des IDE avec des interpréteurs de langage permettant en temps réel de corriger les erreurs de syntaxe.

Des outils tels que SonarQube existent pour optimiser cette qualité de code allant jusqu’à mesurer la dette technique. Ou encore détecter des portions de codes non robustes en termes de sécurité. Cela permet ainsi d’éviter que le système soit malmené en cas d’attaque générant des comportements abusifs et non prévus par le programme.

Mais certains aspects peuvent être indétectables. Imaginons un code malveillant qui respecte toutes les bonnes pratiques et autres normes de programmation. Il ne pourra pas être détecté par ce genre d’outil.

Le Text Mining appliqué au code applicatif

Une approche type Machine Learning pourrait nous aider à résoudre ce problème.

En effet, en s’appuyant sur les travaux existant en Text Mining, nous pouvons avantageusement récupérer de précieuses informations sur nos nombreuses lignes de code.

Pour rappel, en Text Mining, il est possible de faire de la classification sur toutes sortes de publications que ce soit scientifique, ou encore mails, réseaux sociaux avec, notamment, l’analyse de sentiment qui nous permet de mieux comprendre le comportement de la population analysée, ou encore la détection de données sensibles, qui est omniprésente aujourd’hui avec le RGPD (Règlement Général sur la Protection des Données). Ou encore le débat actuel sur la vaccination et le pass sanitaire.

Prenons une base de données où chaque ligne de code serait associée à son développeur. Nous pouvons sélectionner un certain nombre de features pour entraîner un modèle à détecter les changements de style de codage en s’appuyant sur les techniques de Text Mining. En effet, bien que technique, le code source est un candidat au traitement de données textuelles.

Pistes d’analyse et difficultés rencontrées

Pour identifier le code d’un développeur, plusieurs paramètres rentrent en compte. Nous pouvons partir des bonnes pratiques de programmation :

  • L’indentation du code
  • Les commentaires
  • Factorisation du code
  • Le format et nommage des variables et fonctions :
    o   Noms explicites
    o   Camel Case ou Snake Case selon les langages

Nous pouvons également détecter l’utilisation ou non de concepts avancés du langage étudié. Notamment sur du Scala (surcouche de java) où il est aisé de comparer un code Scala avec une approche fonctionnelle (fonctions anonymes, implicits, monades,…) d’un code s’appuyant sur le Java.

Il demeure, toutefois, un certain nombre de difficultés techniques à adresser.

En effet, plusieurs des features présentées comme l’indentation ou les commentaires, sont observables sur un ensemble de lignes. De plus, même un code très bien commenté ne va pas l’être sur les parties triviales de ce même code, ce qui peut entraîner des faux négatifs. À noter également que le code étant la plupart du temps collaboratif, nous pouvons nous retrouver avec plusieurs lignes au sein d’une même boucle n’appartenant pas au même développeur. Ce qui peut perturber l’algorithme.

Passés ces obstacles, un tel outil pourrait détecter les codes malveillants survenant d’une attaque ou de manière plus usuelle la résolution de bugs ou encore le plagiat.

Merci à Jérémie d’avoir coécrit cet article !


Timothée de LyonMes sujets préférés sont les données, les besoins métier et… le Développement Durable! Croyez-moi les 3 s’associent très bien!

N’hésitez pas à me contacter sur LinkedIn et me faire un retour sur cet article!

Timothée

Vous aimerez aussi ...

Laisser un commentaire

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

Recevez nos articles

Recevez chaque mois par e-mail les derniers articles et livres blancs publiés, ainsi que des informations concernant l’actualité IT ! 

Partagez nos articles

Rechercher

Rechercher

Vous faites partie des 10 000 visiteurs mensuels du blog !

Merci pour votre visite ! 

Restez informé.e des dernières tendances en vous inscrivant à notre newsletter mensuelle