Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Chroniqueur Actualités

    Code Defect AI, un outil IA pour aider les développeurs à repérer les bogues pendant le codage
    Code Defect AI, un outil IA pour aider les développeurs à repérer les bogues pendant le codage et non à la fin,
    disponible en open source sous licence Apache v2.0

    Les bogues sont souvent détectés au dernier moment, ce qui retarde le déploiement des logiciels. Pour permettre aux développeurs ainsi qu’aux entreprises d’y remédier, Altran, une entreprise qui fournit des services de R&D et d’ingénierie fondés sur l’IA, a mis en place un outil pour les aider à repérer les bogues pendant le processus de codage et non à la fin. L’outil a été développé en partenariat avec Microsoft et est disponible en open source sur GitHub sous la licence Apache v2.0. Voici ci-dessous les détails clés qu’il faut retenir sur “Code Defect AI”, l’outil d’Altran.

    Les bogues sont une réalité dans le développement de logiciels. Plus un défaut est découvert tardivement dans le cycle de développement, plus les coûts inhérents à sa correction sont élevés. Si un défaut est découvert après le déploiement, les clients sont touchés et les développeurs passent plus de temps à reproduire le problème, puis à publier une correction. Ce processus de déploiement, d'analyse et de correction des bogues est long et coûteux. Par ailleurs, cela peut également occasionner des retards dans les livraisons de nouvelles fonctionnalités.

    Pour aider les entreprises et développeurs à trouver et corriger plus rapidement les bogues, Altran leur propose une solution basée sur l’IA. Le but est de suivre efficacement les bases de code qui comportent un risque élevé d’introduire un bogue. Selon Microsoft, ces bases de code peuvent être apprises par un algorithme d'apprentissage de classification pour prévoir la possibilité qu'un des fichiers présente un bogue. Cela permet de découvrir plus tôt un défaut, ce qui minimise le coût de la correction des bogues. Altran a publié cet outil sous le nom de “Code Defect AI”.


    Code Defect AI est un classificateur d'apprentissage automatique qui prédit les fichiers de code source committé présentant un risque plus élevé de bogue en se référant aux commit historiques. En d’autres termes, en utilisant Code Defect AI, des modèles de classification personnalisés sont créés pour les projets GitHub, sur la base des métadonnées associées aux commit historiques. De cette façon, quand Code Defect AI découvre de nouveaux commit de développeurs, elle prédit si certains fichiers du commit risquent de présenter des défauts.

    La justification de cette prédiction est présentée à l'aide de LIME (Local Interpretable Model-Agnostic Explanations). LIME est une méthode qui permet d’expliquer les prédictions d’un classificateur d'apprentissage automatique. Altran a employé cette technique afin que les développeurs puissent faire confiance à cette prédiction et en tirer des enseignements. Selon Walid Negm, directeur de l'innovation d’Altran, ce nouvel outil aidera les développeurs à publier rapidement un code de qualité et faire baisser les coûts de correction des bogues.

    « Le cycle de publication des logiciels a besoin d'algorithmes qui peuvent aider à prendre des décisions stratégiques, surtout lorsque le code devient plus complexe », a-t-il Negm. Code Defect AI utilise plusieurs techniques de ML, dont les forêts de décision aléatoire, les machines à vecteurs de soutien, le perceptron multicouche (MLP) et la régression logistique. Voici comment fonctionne Code Defect AI :

    • pour un projet GitHub open source, les données historiques sont collectées en utilisant les interfaces RESTFul et Git CLI. Ces données comprennent l'historique complet des commit et l'historique complet des bogues ;
    • des techniques de prétraitement telles que l'identification des caractéristiques, l'encodage des étiquettes, un encodage à chaud, la mise à l'échelle et la normalisation des données sont appliquées aux données historiques collectées ;
    • l'étiquetage est effectué sur les données prétraitées. Le processus d'étiquetage implique la compréhension du modèle dans lequel les “fix commits” (où un bogue a été fermé) sont étiquetés pour chacun des problèmes fermés. Après la collecte des commit de correction, les commit qui ont introduit les bogues sont identifiés en faisant un retour en arrière sur les changements historiques pour chaque fichier d'un commit de correction ;
    • si un ensemble de données contient une très petite quantité de données de bogues par rapport aux enregistrements propres, des données synthétiques sont également générées pour éviter tout biais vers la classe majoritaire ;
    • de multiples algorithmes de modélisation sont formés sur les données préparées ;
    • une fois qu'il existe un modèle qui a une valeur acceptable de précision et de rappel, le modèle sélectionné est déployé pour la prédiction sur les nouveaux commit.

    En outre, Code Defect AI peut être intégré avec des outils d'analyse tiers. De même, il permet également d’identifier les bogues dans un code de programme donné. Code Defect AI permet aussi aux développeurs d'évaluer quelles caractéristiques du code devraient être prioritaires en matière de correction des bogues. Il peut être hébergé aussi bien dans les locaux que sur des plateformes de cloud computing telles que Microsoft Azure.

    Sources : Microsoft, Page GitHub de "Code Defect AI"

    Et vous ?

    Que pensez-vous de cet outil ?

    Voir aussi

    ESLint 7.0.0 est disponible, l'utilitaire de linting pour JavaScript supprime la prise en charge de Node.js 8 et vient avec plusieurs changements de ruptures

    Suivi des linters JavaScript, outils d'analyse statique de code source, ESLint en 4.19.0 et standardJS en 11.0.0

    Node.js : eslint-scope, un paquet npm, a été infecté par un hacker pour lui permettre de voler des identifiants npm
    Contribuez au club : Corrections, suggestions, critiques, ... : Contactez le service news et Rédigez des actualités

  2. #2
    Membre habitué
    Si je comprends bien le principe, l'outil se base sur l'historique pour pouvoir prédire si des modifications vont(peuvent?) provoquer des bugs.
    Si c'est le cas il y a intérêt à ce que les message de commit soient clairs sur ce qui est fait (mais biensûr c'est toujours le cas )

    Je ne pense pas que cet outil change la donne. Après tout avec l'expérience on sait très bien que toucher à tel ou tel fichier c'est s'exposer à des régressions, donc l'outil ne nous dis pas grand chose.
    A mon sens il faut mieux investir dans du test unitaire et des tests fonctionnels automatisés + exploratoires.

    Ce qui m'échappe c'est comment cet outil peut dire "là il y a un bug" comment il le sait?

    La meilleure façon de trouver des bugs et de savoir si l'application permet à l'utilisateur de traiter efficacement le problème qu'il veut résoudre c'est d’interagir avec l'application.
    Cette tendance à vouloir aller plus vite que la musique me laisse perplexe...

  3. #3
    Expert confirmé
    Intéressant. Il fonctionne pour Java, C/C++ et C#. On peut l'utiliser en cloud Azure ou sur site. Je n'ai pas l'infra pour tester mais ça vaut la peine d'essayer pour les grosses boîtes style CapGemini, Sopra Steria et autres. Même Google pourrait être intéressé bien qu'il dispose de machines exclusives sachant pondre du code C/C++ et Java. Manque Python et ce serait parfait.
    Repeat after me
    Le monsieur lutte pour la défense des libertés individuelles et collectives

    Repeat after me...