2011-02-07 3 views
4

Quelqu'un connaît-il un bon outil pour trouver le code en double dans un programme Delphi comme SolidSDD?Détection de Duplication de Code - Delphi

+5

Je suis sûr que vous pourriez trouver quelqu'un sur le SO pour écrire un crochet au niveau du système pour désactiver '' WM_COPY' et WM_PASTE' pour éliminer ce problème à la source! –

+0

@David Heffernan: Il existe un autre type de code dupliqué, appelé «roue réinventée». Accrocher de «copier» et «coller» ne semble pas utile dans ce cas. –

+2

@Andriy Désolé, j'essayais de faire une blague basée sur le grand volume de questions SO de personnes essayant de crocheter les appels système. J'aurais dû rendre plus évident que je n'étais pas sérieux. –

Répondre

5

Delphi 2010 & XE l'ont built in. Il y a un nouvel outil appelé Audits & Métriques.

Ils effectuent plusieurs tests sur votre code pour trouver divers problèmes ou mauvaises odeurs qui peuvent être détectés avec l'analyse statique.

Dans XE du menu, vous pouvez sélectionner, Projet | Audits d'assurance qualité pour accéder aux fonctions de vérification du code en double. Vous pouvez exécuter 3 vérifications de code en double différentes.

QA Audits

Bien qu'il ne fait pas la détection des doublons de code, il y a aussi Peganza Pascal Analyzer qui fait différents audits en utilisant l'analyse statique.

+0

Eh bien, merci pour la réponse, mais comme ma question dit que je suis à la recherche d'un outil pour trouver le code en double. Ni Audicts ni Peganza ne sont capables de faire cela. –

+2

Audits prend en charge le code en double. Je vais éditer ma réponse avec une capture d'écran et des instructions. –

+1

Au moins en 2010, cette fonctionnalité n'est pas disponible pour Professional Edition. – awmross

3

Essayez celui-ci:

Delphi Audit

+0

il ne fait pas de détection de code en double. –

+0

En fait c'est le cas, voir la réponse de Robert Love (mise à jour) –

2

Vous pouvez AQtime du logiciel SmartBear, est un outil de profilage et d'analyse agréable qui vous permet de de détecter duplicated code et beaucoup plus comme:

couverture de code, les questions de performance, allocation de mémoire, trace exception- et fonction, etc.

cet outil n'est pas gratuit mais il est très puissant et supporte les applications Delphi, vous pouvez même choisir de l'intégrer dans votre IDE.

pour plus d'informations c le AQ-Profilers

+0

Eh bien ... nous utilisons AQTime ici à mon travail et je ne savais pas que c'était caplable de faire une telle chose. –

+0

Comment AQTime aide-t-il à trouver du code en double quand même? – Kromster

+0

En utilisant le profileur de code dupliqué, lisez ceci http://smartbear.com/support/viewarticle/18222/ – CloudyMarble

4

Nous avons trouvé DupeCheck sur le site Web du Delphi Torry. Il s'agit d'un fichier .exe autonome qui analyse une liste de répertoires et parcourt les fichiers .pas, en essayant de rechercher des lignes de code en double - en ignorant les commentaires, les espaces et la sensibilité à la casse.

0

J'ai utilisé Simian. http://www.harukizaemon.com/simian/

Vous pouvez facilement l'exécuter pour trouver du code dupliqué. Par exemple:

simian-2.3.33 -ignoreCharacterCase+ -ignoreCurlyBraces+ %1 

Il n'est pas spécifiquement pour Delphi, mais il fonctionne.

Voici un exemple de la sortie:

Simian is not free unless used solely for non-commercial or evaluation purposes. 
{failOnDuplication=true, ignoreCharacterCase=true, ignoreCurlyBraces=true, ignoreIdentifierCase=true, ignoreModifiers=true, ignoreStringCase=true, threshold=6} 
Found 6 duplicate lines in the following files: 
Between lines 6386 and 6391 in c:\develop\Schedule.pas 
Between lines 6370 and 6375 in c:\develop\Schedule.pas 
Found 6 duplicate lines in the following files: 
Between lines 5229 and 5235 in c:\develop\Schedule.pas 
Between lines 5189 and 5195 in c:\develop\Schedule.pas 
Found 6 duplicate lines in the following files: 
Between lines 6892 and 6898 in c:\develop\Schedule.pas 
Between lines 6418 and 6423 in c:\develop\Schedule.pas 
Between lines 6402 and 6407 in c:\develop\Schedule.pas 
Between lines 6354 and 6359 in c:\develop\Schedule.pas 
Between lines 6338 and 6343 in c:\develop\Schedule.pas 
Found 27 duplicate lines in the following files: 
Between lines 2995 and 3022 in c:\develop\Schedule.pas 
Between lines 3035 and 3062 in c:\develop\Schedule.pas