Question

Je veux obtenir un diff entre deux versions d'un fichier de code (de Java / C #) de variété - et de cette obtenir une liste des méthodes (noms) touchés. Cela at-il été mis en œuvre?

Je suppose que cela nécessiterait une analyse AST des lignes qui reviennent de la diff.

Le point de ceci serait d'affiner checkstyle / findbugs travailler uniquement sur les méthodes touchées pendant un sprint.

J'ai eu un coup d'oeil au processus d'éclipse pour faire une diff:

http://dev.eclipse.org/viewsvn/index.cgi/org.eclipse.compare.tests/src/org/eclipse/compare/tests/

On dirait qu'il fonctionne sur le numéro de ligne - pas AST réelle. Je suis intéressé par la ligne # => cartographie nomMéthode.

Était-ce utile?

La solution

Vous pouvez utiliser le comparer api d'éclipse, même sans utiliser lui-même éclipse. Rechercher org.eclipse.compare

Autres conseils

Je ne sais pas si cela va / peut vous aider, mais la diff / comparer dans Eclipse Est-ce que dans le panneau supérieur (ci-dessous qui sont les deux fichiers / versions côte à côte). Graphique, oui, mais peut-être il y a une API là quelque part pour « public »?

J'sais si son œuvre ailleurs.

Mais vous avez raison, vous avez besoin d'un AST, juste pour décider ce que les corps de méthode sont, mais vous devez aussi le nom et la résolution de type + Graphique appel de décider si deux méthodes nommées SAM sont en fait dans la même classe et sont donc « versions » de l'autre.

Notre DMS Software Reengineering Toolkit a Java et constructions parseurs nom / résolution de type et un graphe d'appel complet, donc il peut être utilisé pour déterminer « correspond à la méthode ». (Bien sûr, vous pouvez tricher et simplement décider que si les noms de méthode étaient les mêmes, ils doivent être des variantes, mais vous obtiendrez beaucoup de faux positifs sur et ECRIRE, etc. et si vous avez fait beaucoup, ces faux positifs seraient être très distrayant). Après avoir décidé que les « match », leur texte pourrait être displaed. Ce serait utile si un grand nombre de fichiers API pour comparer.

Une autre solution consisterait à appliquer « Smart Diff » de SD à des paires des fichiers Java que vous savez la version originale et modifiée. Il compare et trouve les RSHS modifications minimales à la carte dans un autre. Si les méthodes anciennes et nouvelles sont tout similaires, il découvrira que et vous dire comment on a été modifié pour obtenir l'autre. Voir http://www.semdesigns.com/Products/SmartDifferencer/index.html

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top