Thèse soutenue

Les pratiques de code : de la documentation à la détection

FR  |  
EN
Auteur / Autrice : Corentin Latappy
Direction : Jean-Rémy Falleri
Type : Thèse de doctorat
Discipline(s) : Informatique
Date : Soutenance le 19/06/2024
Etablissement(s) : Bordeaux
Ecole(s) doctorale(s) : École doctorale Mathématiques et informatique (Talence, Gironde ; 1991-....)
Partenaire(s) de recherche : Laboratoire : Laboratoire bordelais de recherche en informatique
Jury : Président / Présidente : Akka Zemmari
Examinateurs / Examinatrices : Théo Zimmermann
Rapporteur / Rapporteuse : Anne Etien, Mathieu Acher

Résumé

FR  |  
EN

Les pratiques de code sont de plus en plus utilisées dans le domaine du développement logiciel. Leur mise en place permet d’assurer la maintenabilité, la lisibilité et la consistance du code, ce qui contribue fortement à la qualité logicielle. La majorité de ces pratiques est implémentée dans des outils d’analyse statique, ou linters, qui permettent d’alerter automatiquement les développeurs lorsqu’une pratique n’est pas respectée. Toutefois, de plus en plus d’organisations, ayant tendance à créer leurs propres pratiques internes, rencontrent des problèmes sur leur compréhension et leur adoption par les développeurs. Premièrement, afin d’être appliquée, une pratique doit d’abord être comprise par les développeurs, impliquant donc d’avoir une documentation correctement rédigée. Or, ce sujet de la documentation n’a été que peu étudié dans la littérature scientifique. Ensuite, pour favoriser leur adoption, il faudrait pouvoir étendre les outils d’analyse existants pour y intégrer de nouvelles pratiques, ce qui est difficile compte tenu de l’expertise nécessaire pour apporter ces modifications. Packmind, société bordelaise, développe une solution pour accompagner les développeurs à faire émerger ces pratiques internes à l’aide d’ateliers. Cependant, elle souffre des mêmes problématiques citées précédemment. Dans cette thèse, nous nous sommes d’abord intéressés à fournir des recommandations aux auteurs de la documentation des pratiques. Pour cela, nous avons analysé la documentation de plus de 100 règles provenant de 16 linters différents afin d’en extraire une taxonomie des objectifs de documentation et des types de contenu présents. Nous avons ensuite réalisé une enquête auprès de développeurs afin d’évaluer leurs attentes en termes de documentation. Cela nous a notamment permis d’observer que les raisons pour lesquelles une pratique doit être appliquée étaient très peu documentées, alors qu’elles sont perçues comme essentielles par les développeurs. Dans un second temps, nous avons étudié la faisabilité de l’identification automatique de violations de pratiques à partir d’exemples. Notre contexte, nous contraignant à détecter des pratiques internes pour lesquelles nous avons peu d’exemples pour apprendre, nous a poussé à mettre en place du transfert d’apprentissage sur le modèle de machine learning CodeBERT. Nous montrons que les modèles ainsi entraînés obtiennent de bonnes performances dans un contexte expérimental, mais que la précision s’écroule lorsque nous les appliquons à des bases de code réelles.