2017-01-10 5 views

Répondre

2

est-il un outil pour refactorisation des scripts shell? J'en doute.

Toutefois, vous pouvez en créer un en utilisant un program transformation system (PTS) général. Ce sont des outils qui acceptent les descriptions de langues (vous auriez besoin d'une grammaire pour les scripts shell POSIX), analyseront les ASTs de construction de langauge, et vous permettront ensuite d'appliquer des transformations à ces ASTs, texte. Les bonnes PTSes vous permettent d'exprimer des changements de code en utilisant des modèles de code source (Cocinelle n'est pas un PTS générique puisqu'il ne fonctionne que pour C, mais il entre dans cette catégorie de source-pattern) plutôt que d'écrire du code de procédure pour modifier des arbres. Un problème avec la plupart d'entre eux est qu'ils ne vont pas au-delà de l'appariement sur AST (sans contexte), alors que les contraintes réelles exigent que l'outil comprenne le «contexte» (par exemple, comment les informations éloignées dans le texte source affectent le signification d'un point particulier dans le texte). Cocinelle le fait aussi, c'est pourquoi c'est un outil intéressant; ce type de capacité est nécessaire pour transformer les langages de programmation traditionnels. Notre boîte à outils de réorganisation de logiciels DMS est un PTS général qui prend en charge l'analyse contextuelle (tables de symboles, contrôle et analyse de flux de données, ...). Je pense que les langages de script shell (Unix) comme Posix, ont tous des fonctionnalités de type macro qui rendent leur traitement beaucoup plus difficile que des langages sans macro tels que Java. DMS fournit un support intégré pour la capture et la gestion des conditions et des macros du préprocesseur; il les utilise actuellement pour gérer C et C++.

Mais, une transformation Posix n'est pas prête à l'emploi. Vous devez définir sa grammaire, et les différents supports d'analyse de contexte pour DMS. À ce stade, vous pouvez commencer à écrire des transformations dépendantes du contexte en utilisant des modèles source. Ce travail est faisable avec DMS, mais n'est pas un exercice de week-end. Donc, la vraie question est,

combien de correctifs automatisés avez-vous l'intention de faire; est-ce suffisant pour justifier la configuration d'un PTS?