Un nouveau jeu de données pour les motifs de code Python
Une ressource pour les développeurs afin d'améliorer leurs pratiques de codage en Python.
― 6 min lire
Table des matières
Les systèmes logiciels évoluent avec le temps quand les Développeurs mettent à jour le code pour ajouter des fonctionnalités, corriger des bugs ou trouver de meilleures façons d'écrire du code. Parfois, ces mises à jour se répètent dans différents projets, montrant des schémas qui peuvent être utiles aux développeurs. Ça peut aider à créer des outils qui suggèrent des améliorations ou corrigent automatiquement des problèmes dans le code. Même s'il y a plein de ressources pour Java, il n'y en a pas beaucoup pour Python, qui est un langage de programmation super populaire.
But
Dans ce travail, un nouveau jeu de données est créé, contenant des schémas de changements de code Python qui ont été soigneusement vérifiés. L'objectif est de fournir une collection de changements courants qui peuvent être utilisés pour des outils aidant les développeurs. Ces schémas peuvent guider les Pratiques de codage et suggérer de meilleures façons d'écrire du code.
Trouver des Changements Répétitifs
Quand les développeurs modifient leur code, ils le font souvent de manière similaire. Par exemple, en Java, les développeurs pourraient remplacer une boucle qui ajoute des éléments à une liste par une méthode qui le fait de manière plus efficace. Ça rend le code plus court et plus facile à lire, et ça peut même faire tourner le programme plus vite.
Des recherches ont montré qu'en examinant ces types de changements dans l'historique de contrôle de version, on peut trouver des schémas fréquents. La plupart des recherches existantes se sont concentrées sur Java, avec seulement des efforts récents dirigés vers Python, même si Python est largement utilisé. Inspirés par les outils créés pour Java, il y a une envie de créer un outil Python qui puisse alerter les développeurs sur des changements similaires qui pourraient améliorer leur code.
Des recherches récentes ont analysé le code de nombreux projets Python pour chercher des changements de code courants. Ils ont trouvé plus de 500 schémas significatifs, mais tous ne peuvent pas être appliqués à différentes situations.
Comprendre les Schémas Généralizables
Un schéma de changement est considéré comme généralisable si le code mis à jour est similaire en signification à l'ancien code et que le changement peut être appliqué de manière large. Par exemple, si un développeur peut remplacer une boucle de somme par une fonction intégrée qui fait la même chose, c’est un changement généralisable. Cependant, si deux actions sont complètement différentes (comme créer un graphique par rapport à le montrer), recommander l'une à la place de l'autre ne serait pas utile.
Cette distinction est importante pour développer des outils qui suggèrent des changements ou les appliquent automatiquement. Ce n'est pas suffisant de simplement trouver des schémas ; ces schémas doivent être largement applicables et corrects.
Révision Manuelle des Schémas de Changement
Pour identifier de bons schémas de changement, une approche manuelle peut être adoptée. Cela implique d'examiner de près les schémas déjà trouvés et de filtrer ceux qui ne répondent pas aux critères de généralisation. L'objectif de ce processus est de créer un jeu de données qui inclut seulement les schémas les plus utiles.
Parmi les plus de 500 schémas étudiés, beaucoup ne répondaient pas aux critères de généralisabilité. Cela a conduit à une collection finale de 72 schémas qui ont passé le processus de révision manuelle, chacun incluant une description du changement et la raison qui le motive.
Caractéristiques des Schémas
Le jeu de données inclut divers détails sur chaque schéma de changement. Ces informations aident à comprendre à quelle fréquence différents changements sont effectués, quels bibliothèques ou outils ils concernent, et dans quel type de projets ils apparaissent. Par exemple, certains schémas peuvent être couramment utilisés dans des projets d'apprentissage automatique, tandis que d'autres peuvent s'appliquer à divers types d'applications.
De plus, il a été noté que beaucoup de ces schémas ont été créés par plusieurs développeurs à travers différents projets, ce qui indique qu'ils sont fiables et pas juste des solutions isolées.
Raisons du Changement
Pour chaque schéma, il y a une courte description expliquant pourquoi le changement est bénéfique. Ces explications peuvent aider les développeurs à voir pourquoi ils pourraient vouloir faire ce genre de changements dans leur propre code. Par exemple, certains schémas impliquent d'utiliser des fonctionnalités intégrées de Python qui aident à mieux gérer les fichiers, ou de convertir un long bloc de code en une forme plus efficace qui améliore les performances.
Format des Données et Accessibilité
Le jeu de données final est partagé dans un format structuré qui le rend facile à comprendre et à utiliser. Chaque schéma est catégorisé, et des informations supplémentaires sont incluses pour ceux qui veulent explorer les changements plus en détail ou les appliquer dans leur propre travail.
Conclusion
Ce travail produit un jeu de données utile de schémas de changements de code Python qui ont été soigneusement vérifiés. Avec 72 schémas choisis pour leur applicabilité large, les développeurs ont maintenant une ressource fiable pour les aider à améliorer leurs pratiques de codage. Ces schémas améliorent non seulement la lisibilité mais aussi les performances et peuvent aider à guider les développeurs vers les meilleures méthodes disponibles.
En suivant ces schémas, les développeurs peuvent bénéficier des expériences des autres et éviter les pièges courants, menant finalement à un code meilleur et plus efficace. Ce jeu de données pose les bases pour de futurs outils qui peuvent assister les développeurs Python à prendre de meilleures décisions de codage.
Alors que ce domaine d'étude continue d'évoluer, on espère que d'autres schémas de changement Généralisables pourront être identifiés, menant à encore meilleurs outils automatisés qui rendent le codage plus facile et plus efficace pour tous ceux impliqués dans le développement de logiciels.
Titre: A Data Set of Generalizable Python Code Change Patterns
Résumé: Mining repetitive code changes from version control history is a common way of discovering unknown change patterns. Such change patterns can be used in code recommender systems or automated program repair techniques. While there are such tools and datasets exist for Java, there is little work on finding and recommending such changes in Python. In this paper, we present a data set of manually vetted generalizable Python repetitive code change patterns. We create a coding guideline to identify generalizable change patterns that can be used in automated tooling. We leverage the mined change patterns from recent work that mines repetitive changes in Python projects and use our coding guideline to manually review the patterns. For each change, we also record a description of the change and why it is applied along with other characteristics such as the number of projects it occurs in. This review process allows us to identify and share 72 Python change patterns that can be used to build and advance Python developer support tools.
Auteurs: Akalanka Galappaththi, Sarah Nadi
Dernière mise à jour: 2023-04-11 00:00:00
Langue: English
Source URL: https://arxiv.org/abs/2304.04983
Source PDF: https://arxiv.org/pdf/2304.04983
Licence: https://creativecommons.org/licenses/by-sa/4.0/
Changements: Ce résumé a été créé avec l'aide de l'IA et peut contenir des inexactitudes. Pour obtenir des informations précises, veuillez vous référer aux documents sources originaux dont les liens figurent ici.
Merci à arxiv pour l'utilisation de son interopérabilité en libre accès.