Les pratiques de code : de la documentation à la détection - TEL - Thèses en ligne
Thèse Année : 2024

Coding practices : from documentation to detection

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

Résumé

Coding practices are increasingly used in the field of software development. Their implementation ensures maintainability, readability, and consistency of the code, which greatly contributes to software quality. Most of these practices are implemented in static analysis tools, or linters, which automatically alert developers when a practice is not followed. However,more and more organizations, tending to create their own internal practices, encounter problems with their understanding and adoption by developers. First, for a practice to be applied, it must first be understood by developers, thus requiring properly written documentation. Yet, this topic of documentation has been little studied in the scientific literature. Then, to promote their adoption, it would be necessary to be able to extend existing analysis tools to integrate new practices, which is difficult given the expertise required to make these modifications. Packmind, a company based in Bordeaux, develops a solution to support developers in bringing out these internal practices through workshops. However, it suffers from the same issues mentioned above. In this thesis, we first focused on providing recommendations to the authors of practice documentation. To do this, we analyzed the documentation of more than 100 rules from 16 different linters to extract a taxonomy of documentation objectives and types of content present. We then conducted a survey among developers to assess their expectations in terms of documentation. This notably allowed us to observe that the reasons why a practice should be applied were very poorly documented, while they are perceived as essential by developers. Secondly, we studied the feasibility of automatically identifying violations of practices from examples. Our context, forcing us to detect internal practices for which we have few examples to learn from, pushed us to implement transfer learning on themachine learning model CodeBERT.We show that the models thus trained achieve good performance in an experimental context, but that accuracy collapseswhenwe apply them to real code bases.
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.
Fichier principal
Vignette du fichier
LATAPPY_CORENTIN_2024.pdf (4.37 Mo) Télécharger le fichier
Origine Version validée par le jury (STAR)

Dates et versions

tel-04680977 , version 1 (29-08-2024)

Identifiants

  • HAL Id : tel-04680977 , version 1

Citer

Corentin Latappy. Les pratiques de code : de la documentation à la détection. Informatique [cs]. Université de Bordeaux, 2024. Français. ⟨NNT : 2024BORD0101⟩. ⟨tel-04680977⟩
105 Consultations
46 Téléchargements

Partager

More