2016-11-27 1 views
1

Actuellement, je travaille sur des recherches sur les tâches de refactoring et leur hiérarchisation. J'ai besoin d'examiner les effets de chaque tâche (par exemple, déplacer la méthode, extraire la méthode, supprimer la méthode) et de faire un certain calcul au niveau de la classe et du projet.Codage dur de la méthode de déplacement et d'extraction du refactoring, classe d'analyse et ses références?

Quelle est la meilleure façon d'aborder ces tâches manuellement, au niveau du code? Je pensais construire un plugin Eclipse au dessus de son application principale qui ouvre le refactor menu et refactoring des tâches, mais cela ne semble pas une bonne méthode, j'ai besoin d'une relation plus étroite avec le code de chaque classe.

D'une autre façon, je pensais construire un plugin qui analyse chaque classe et ses références et fait réf. tâches en analysant? Cette approche me semble plus appropriée car j'ai besoin d'automatiser le processus et de faire des calculs.

Quelle est la méthode courante de programmation/codage des tâches de refactoring (méthode move, extract et delete)? Je travaille sur Java.

Répondre

0

Il est un peu difficile de ce que vous essayez de faire. Avec Eclipse JDT, il existe des API pour exécuter les refactorings manuels: http://help.eclipse.org/mars/index.jsp?topic=%2Forg.eclipse.jdt.doc.isv%2Freference%2Fapi%2Forg%2Feclipse%2Fjdt%2Fcore%2Frefactoring%2FIJavaRefactorings.html

J'ai vu un document de recherche décrivant l'impact de ces réacteurs sur la consommation d'énergie.

Sinon, vous pouvez regarder AutoRefactor pour un exemple de l'utilisation de JDT pour faire des refactorings. Disclaimer: Je suis l'auteur de AutoRefactor.

+0

Tout d'abord, merci pour la réponse, je vais regarder les références et revenir à ajouter ici. Je veux exécuter chaque ref. tâche, calculer des métriques et sur cette base, continuer ou arrêter avec la tâche suivante et je cherche la façon la plus appropriée de le coder. Pour AutoRefactor, je suis tombé sur votre article publié dans des systèmes experts avec des applications et bon travail, je souhaitais qu'il pourrait gérer plus de mauvaises odeurs (comme je me souviens, seulement 3 étaient là?!). – arminkobi

+0

Je n'ai publié aucun article :) Avez-vous une référence par hasard? – JnRouvignac

+0

:-) http://www.sciencedirect.com/science/article/pii/S0957417414005612, il semble que _AutoRefactoring_ est le nom de la plate-forme publiée, puis j'ai mélangé les outils. :-) – arminkobi

0

Les outils de refactoring les plus généraux sont Program Transformation Systems (PTS). Ce sont des outils qui lisent le code source, construisent des structures de données du compilateur (souvent des AST) représentant ce code, permettent des modifications personnalisées à ces structures, et peuvent ensuite régénérer du code à partir des structures modifiées.

bonnes PTSes peuvent être configurés pour gérer langauges arbitraires, et vous permettre d'écrire la transformation de code en termes de transformations source-source en utilisant la syntaxe de surface de la langauge cible, sous la forme suivante:

when you see *thispattern*, replace it by *thatpattern* if *condition* 

De tels outils peuvent effectuer des refactorings de code arbitraires dans les petits changements de code architecturaux ou même des migrations langauge dans le grand.

[Voir ma bio pour l'un de ces].

+0

Ce sera très intéressant si je pouvais me permettre plus de temps pour le rendre plus général et plus formel, surtout pour pouvoir vérifier la conservation du comportement du programme refactorisé en utilisant des spécifications formelles et une sémantique formelle, mais malheureusement pour le moment j'en ai besoin le niveau "code-à-code", avec un codage aussi simple que possible car mes recherches portent sur l'étape suivante. Merci de m'indiquer votre biographie, beaucoup d'articles intéressants et ouverts. Veuillez nous dire ce que vous pensez de l'analyse du programme Java, de la recherche d'un identifiant d'élément spécifique et de la réutilisation et de l'application de la tâche de refactorisation d'Eclipse. – arminkobi

+0

Lire "LifeAfterParsing" via ma bio. Eclipse devrait vous permettre de rédiger un code de procédure pour pirater les AST. Les moteurs de transformation de programmes vous permettent de "hacker" les schémas d'écriture ASTs, ce qui le rend beaucoup plus facile. –

+0

Je ne sais pas où "les spécifications formelles et la vérification" sont entrées dans cette discussion; Je ne l'ai pas mentionné. Un PTS ne fournit pas de support spécifique pour cela. Mais alors, aucun outil de refactoring que j'ai jamais vu, et aucun compilateur, n'offre un tel support (à l'exception d'un article académique vraiment rare sur un tel outil). Les PTS concernent l'application * pratique * des transformations code-code. –