166 votes

Existe-t-il un outil de refactoring C++ qui fonctionne ?

Quelqu'un connaît-il un outil de refactoring complet pour C++ qui fonctionne de manière fiable avec de grandes bases de code (environ 100 000 lignes) ?

J'ai essayé tout ce que j'ai pu trouver, encore et encore, ces dernières années : SlickEdit, Eclipse CDT. Ils n'étaient pas du tout utilisables.

RÉSUMÉ : J'ai pris le temps d'évaluer "Visual Assist X" ainsi que "Refactor for C++". Les deux ont des fonctionnalités impressionnantes, mais les deux aussi sont loin d'être parfaits. L'extraction d'un gros bloc de code n'est généralement pas satisfaisante sans modifications manuelles - et n'est donc pas rentable.

"Visual Assist X" présente des caractéristiques intéressantes, comme une autocomplétion beaucoup plus complète, etc. Mais il entraîne beaucoup de scintillement et ralentit beaucoup à certains moments.

À mon avis, la réponse est donc : "Non, il n'existe pas d'outil de refactoring prêt à l'emploi pour le C++".

MISE À JOUR mars 2015 En ce qui concerne la réponse de hdoghmens, j'ai essayé aujourd'hui Resharper pour C++. Son lien https://www.jetbrains.com/resharper/ ne dit rien sur le C++. Mais j'ai trouvé Resharper C++ qui a été annoncé il y a plus d'un an ici :

https://www.jetbrains.com/resharper/features/cpp.html

J'ai fait un essai avec VC2010 en utilisant une base de code de 20MB.

Test 1 : Méthode d'extraction : résulte en une exception de Resharper. Aucun code source n'a été modifié.

Test 2 : Méthode d'extraction avec une source différente : Fonctionne bien

Test 3 : modifier la signature de la fonction extraite : Résultats dans le code C++ cassé :

bool myclass::do_work123(<unknown long Color>int& Filled*&, long, int&)

C'est peut-être pour cela que le C++ n'est pas listé sur la page principale.

À mon avis, la réponse à cette question est toujours la suivante "NON" .

11 votes

J'ai préféré celui-là. Le problème du C++ est sa syntaxe très complexe et sensible au contexte. Sans analyser la source complète, vous ne pouvez pas être sûr de la signification d'un identifiant.

0 votes

Voir aussi : stackoverflow.com/questions/249827/ mais il n'a pas grand-chose à offrir

4 votes

Eclipse fonctionne en fait assez bien, vous devez juste lui permettre d'utiliser plus de mémoire en éditant eclipse.ini

42voto

Tom Leys Points 10453

Assistance visuelle et Visual Studio facilitent grandement la gestion des bases de code volumineuses. L'assistance visuelle permet de déterminer comment une classe ou un membre est utilisé et elle est plus efficace que la recherche et le remplacement pour renommer sans faux positifs.

38voto

Gant Points 9920

Je trouve Assistance visuelle X avec Visual Studio très utile. Un autre choix est Refactor pour C++ .

8 votes

Malheureusement, Refactor pour C++ ne fonctionne pas bien (voire pas du tout) avec les grandes bases de code.

1 votes

Que se passe-t-il spécifiquement avec Refactor pour C++ et les grandes bases de code ?

2 votes

@IraBaxter Il est tout simplement cassé. Les options de refactoring ne s'affichent pas ou ne se terminent pas. Il y a des messages d'erreur étranges ou aucun message du tout.

26voto

HighCommander4 Points 9962

J'attends clang va changer de manière significative le paysage des outils de remaniement du C++ au cours des deux prochaines années. Il s'agit d'un compilateur modulaire à code source ouvert qui expose une API pour l'analyse syntaxique et sémantique du code C++. Les IDE et d'autres outils pourront utiliser cette API au lieu de faire le difficile travail d'écrire leur propre analyseur syntaxique et sémantique.

Google a déjà créé un outil de refactoring à grande échelle en utilisant clang. .

3 votes

Mais y a-t-il un résultat qu'un simple mortel en dehors de Google pourrait utiliser ?

1 votes

@JanHudec : Regardez le tutoriel dont le lien est ici : comments.gmane.org/gmane.comp.compilers.clang.devel/23203

17voto

Cristian Adam Points 3691

Mozilla dispose de son propre outil de refactoring nommé Pork ( Wiki , Wiki du développeur ). Aquí est le blog du développeur derrière Pork. D'après ce que j'ai lu, Pork a été utilisé avec succès dans les refactorings chez Mozilla.

Pork devrait vous aider si vous venez de la terre *nix, pour Visual Studio je recommande aussi Visual Assist.

8voto

bmeric Points 845

Si vous utilisez emacs, essayez Xrefactory . Il prend en charge l'extraction de méthodes, le renommage de classes/fonctions/variables et l'insertion/suppression/déplacement de paramètres, ainsi qu'un moteur de complétion de code très performant et rapide.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X