11
votes

Existe-t-il un outil de diffamanque de travail de travail pour C ++?

J'ai trouvé uniquement des projets abandonnés, des théories et des listes de caractéristiques. Mais je n'ai pas pu trouver un outil pouvant comparer deux fichiers source C ++ et montrer des différences sémantiques.

Bien sûr, je ne comparerais pas deux fichiers non liés ni changements accumulés au cours de 10 ans de développement et de maintenance. Mais les changements généralement discutés lors d'une revue de code seraient plus facilement compris, s'ils sont présentés avec une signification correcte, au lieu de modifications textuelles au niveau Char / Word / Line


0 commentaires

4 Réponses :


-2
votes

Ce n'est pas possible, en général. Un programme ne peut même pas dire si un autre se terminera (le fameux HALnting Problème ). Pour des programmes plus limités (boucles finisement délimitées, et peut-être d'autres contraintes), vous pouvez en faire plus, mais c'est des choses lourdes, et le langage devrait être, pas c ++, mais quelque chose de moins délicat, un sous-ensemble limité ou un langage plus simple. C'est probablement pourquoi vous ne trouvez rien qui a été plus que démarré.


0 commentaires

-2
votes

Oui, on l'appelle "écrire des commentaires pour commettre" et "Suivi des émissions". Considérez cette métadonnée pour une analyse sémantique.


7 commentaires

Mais ce serait une couche ISO C surchauffe des informations, au lieu d'utiliser un outil


Vrai. Chaque contrôle de la version peut afficher l'historique avec des commentaires, mais je ne l'ai jamais vu intégré à la fusion de l'outil de fusion, sur la base de changement. Pourrait devenir une fonctionnalité très utile ... de l'autre, pourrait affronter des commentaires dans le code.


Intégré dans l'outil de fusion? Comme git?


Quel problème de suivi intégré à l'outil de fusion dans git ? GIT n'a aucune intégration à moitié décente avec le suivi de la question, ni l'outil de fusion intégré, je ne peux donc que le deviner que cela n'a pas d'intégration de ces deux.


Je vous ai probablement mal compris, mais git fusion Les poignées se confondent aussi proprement et simplement car il est simple commet, avec des histoires complètes et commet le référentiel source. Avec de bons commentaires commettants (et avec des examinateurs utilisant --Signoff), il est assez facile de suivre l'historique des problèmes spécifiques. L'intégration avec le problème / les suiveurs de bogues serait bien, mais il ne devrait pas être difficile d'ajouter avec quelques scripts Perl.


Veuillez lire la question avant de poster - même les utilisateurs de GIT peuvent le faire. «Git Fusion» traite des branches, question concerne les fichiers.


L'idée était - pour les fichiers diff et fusion - avoir des problèmes et des commentaires et des histoires facilement disponibles pour chaque changement individuel.



3
votes

Un vrai "sémantique diff" est impossible. Plus près serait un outil comparé à deux fichiers source pour voir comment on a été dérivé de l'autre par des opérations d'édition abstraites (Supprimer, copier, déplacer, renommer) sur les structures de programme (variables, expressions, déclarations, méthodes). Voir notre Smart Difference pour un outil qui le fait pour quelques langues, avec C ++ à venir.

mars 2013: dialectes GCC / MS de C ++ 11 pris en charge.


4 commentaires

Mars 2010: Son été disponible depuis plusieurs mois, je viens de rentrer à cette question particulière.


Janvier 2011: Smart Differencer maintenant disponible pour Java, C #, C ++, C, Cobol, JavaScript, VB.net, Python, ...


Savez-vous s'il y a un plugin Clang pour le faire?


Je ne connais pas d'un plugin Clang pour faire cela.



2
votes

Il y en a un pour C utilisé par les développeurs de noyau Linux. Pas pour C ++ si

http://coccinelle.lip6.fr


2 commentaires

@Brad: Ils parlent de correctifs sémantiques, mais il semble que ce qu'elles signent sont des "correspondances de motifs" insensibles aux changements d'espaces blancs, noms variables, etc. sur plusieurs versions d'un fichier, mais ce n'est pas clair qu'ils Comparez Deux fichiers pour déterminer qu'ils sont similaires. Pouvez-vous indiquer spécifiquement où ils disent cela?


Vous avez l'outil SPDIFF pour déduire des correctifs sémantiques DIKU.DK/HJEMMESIDER/ANSATTE/JESPERA /doc.html .