![]() |
DupeChecker - Duplikate im Source finden v1.3.5
Liste der Anhänge anzeigen (Anzahl: 4)
Hallo Alle,
vielleicht kennt Ihr die Situation: Man arbeitet längere Zeit an einem größeren Projekt. Dabei geht man leider nicht immer nach OOP vor und arbeitet in großen Teilen mit Copy & Paste. Irgendwann kommt der Zeitpunkt, zu dem ein Projekt nicht mehr wartbar und ziemlich aufgeblasen ist. Man kann natürlich aus der Erinnerung und nach Gefühl vorgehen, um ein Refactoring vorzunehmen. Aber gerade die nachträgliche Suche nach Stellen, die man zu Funktionen zusammenfassen könnte, dauert dann beliebig lange. Genau hier hilft der DupeChecker:
DupeCheck v 1.3.5
DupeCheck v 1.3 "BigMac"
DupeCheck v 1.2.1
DupeCheck v 1.2 - Turbo
DupeCheck v 1.1
|
Re: DupeChecker - Duplikate im Source finden
Zitat:
erst einmal: sehr gute Idee! Bei der Pfadeingabe wäre ein Auswahldialog ganz nützlich übder den man den Pfad auswählen kann. Zu den Ergebnissen: Ich habe mal einige Projekte gescannt und es werden solche Stellen als Duplikate gefunden:
Delphi-Quellcode:
(Gut, das sind Duplikate, da sie überall im Programm vorkommen aber Sinn des Programmes ist es ja wohl doppelten Code zu finden. Gleiche Kontrollstrukturen (oder Teile davon) dürften da wohl keinen Sinn machen, oder?end; end; Eventuell sollten solche Stellen, die nur aus Schlüsselworten bestehen nicht mit verglichen werden. Ciao, Ralf |
Re: DupeChecker - Duplikate im Source finden
Hallo!
Die Idee finde ich auch gut! Jedoch funktioniert's bei mir nicht. Ich gebe einen gueltigen Pfad an und klicke auf Start. Es sagt dann immer "0 Zeilen gelsesen und 0 Duplikate in 0.01 s gefunden. 0 Zeilen verglichen" Vorschlaege: 1) Button zum Auswaehlen einer Datei 2) Wenn die eingegebene Datei nicht existiert, Fehler anzeigen. 3) Drag & Drop einer Datei ins Edit (so dass es den Pfad uebernimmt) |
Re: DupeChecker - Duplikate im Source finden
Zitat:
Zitat:
Und Kontrollstrukturen müssen mit in den Vergleich einfließen, denn jede Source-Datei besteht hauptsächlich aus solchen. Oder meinst Du man solle Blöcke ausfiltern, die ausschließlich aus Schlüsselworten bestehen? Zitat:
Zitat:
|
Re: DupeChecker - Duplikate im Source finden
Zitat:
Der Tree wird sichtbar langsam geloescht. Verwende mal BeginUpdate.. EndUpdate.. Zitat:
nicht fuer jedes Duplikat im Quelltext mit Goto zur angezeigten Stelle springen. |
Re: DupeChecker - Duplikate im Source finden
Zitat:
Zitat:
Zitat:
|
Re: DupeChecker - Duplikate im Source finden
Zitat:
Es wuerde vorerst genuegen, denn Quelltext in einem SynEdit anzuzeigen. Er soll, wahlweise zum Ziel od. Quelle springen koennen. |
Re: DupeChecker - Duplikate im Source finden
hi,
dies
Delphi-Quellcode:
soll gleich das
FileImportHTML: TMenuItem;
FileImportXML: TMenuItem; ImportMenuSep1: TMenuItem; FileImportHEX: TMenuItem; FileExport: TMenuItem; FileExportRTF: TMenuItem; FileExportHTML: TMenuItem; FileMenuSep4: TMenuItem; PrintFile: TMenuItem; PrintAllFiles: TMenuItem; PrintBlock: TMenuItem; FileMenuSep5: TMenuItem; ExitProg: TMenuItem;
Delphi-Quellcode:
sein.
InsertMenuSep1: TMenuItem;
InsertDateTime: TMenuItem; InsertMenuSep3: TMenuItem; InsertASCII: TMenuItem; InsertMenuSep4: TMenuItem; InsertColor: TMenuItem; MacroMenu: TMenuItem; MacroRecord: TMenuItem; MacroMenuSep1: TMenuItem; MacroLoad: TMenuItem; MacroSave: TMenuItem; MacroMenuSep2: TMenuItem; MacroPlay: TMenuItem; Was ich aber bezweifeln möchte :mrgreen: |
Re: DupeChecker - Duplikate im Source finden
@kalmi01
Ich habe die von Dir angegebenen Source-Blöcke in eine .pas Datei kopiert und den DupeCheck drüber laufen lassen. Die Stellen wurden nicht als Duplikate erkannt. Vielleicht kannst Du mir helfen, indem Du mir
|
Re: DupeChecker - Duplikate im Source finden
Zitat:
ich meine, daß wenn im Ergebnis nur Schlüsselworte zu finden sind dann soltte dies nicht als Ergebnis gewertet werden: Irgendwo im Source befinden sich beispielsweise immer wieder stark geschachtelte Schleifen oder if-Abfragen, dann kommt es unter Umständen dazu, daß das Ende dieser Schelien/if-Abfragen als Duplikat erkannt wird:
Delphi-Quellcode:
So etwas sollte man dann rauslassen. Ansonsten, wie gesagt, die Idee is super, so kann man herausfinden wo man am besten mit den Refactoring anfängt.
(ab hier wird das folgende als Duplikat erkannt:)
end; end; end; end; end; end; end; end; Ciao, Ralf |
Re: DupeChecker - Duplikate im Source finden v1.1
|
Re: DupeChecker - Duplikate im Source finden v1.1
Hi!
Ich hab das Teil zum Ausprobieren grad mal über ein paar Delphi-Demos laufen lassen. Und schwuppsdich - Division by zero. :-) Z.B. in C:\Programme\Borland\BDS\4.0\Demos\DelphiWin32\VCL Win32\Frames und ActionBands. Ist aber trotzdem interessant. :-) Uli. |
Re: DupeChecker - Duplikate im Source finden v1.1
Hi,
das liegt daran, dass das gesamte Projekt in den .pas Dateien unter 50 Zeilen hat. Das funktioniert erst ab 100 Zeilen Gesamtlänge, ich arbeite im ProgressEvent mit
Delphi-Quellcode:
und
trunc
Delphi-Quellcode:
... Wird korrigiert.
mod
|
Re: DupeChecker - Duplikate im Source finden v1.2
|
Re: DupeChecker - Duplikate im Source finden v1.2
Moin, Spätmoin,
Ja also erstmal schliesse ich mich meinen Vorschreibern an. Eine richtig gute Idee! Das so ein Projekt seine Wachstumszeit braucht liegt auf der Hand. Richtig spannend wird es, wenn Du die Ersetzen-Funktion eingebaut hast. Also, dass man auf einem Nebenfenster den neuen Code für die Duplikate eingeben kann und dieser jeweils überall eingesetzt wird. Werde das Projekt jedenfall mit Neugier weiterverfolgen. Grüße // Martin |
Re: DupeChecker - Duplikate im Source finden v1.2.1
|
Re: DupeChecker - Duplikate im Source finden v1.3
|
Re: DupeChecker - Duplikate im Source finden v1.3
Moin, moin,
Dein BigMac hat zum Glück keine Kalorien... Grüße // Martin |
Re: DupeChecker - Duplikate im Source finden v1.3
Hi,
Gefällt mir, dein Tool. Einen kleinen Verbesserungsvorschlag möchte ich auch gleich abgeben: Es wäre fein, wenn im "Duplikat zeigen"-Fenster synchron gescrollt werden würde. D.h. ich scrolle in einer Ansicht und die andere scrollt mit. grüße, daniel |
Re: DupeChecker - Duplikate im Source finden v1.3
Das geht auch, allerdings nur wenn über die Cursortasten gescrollt wird.
|
Re: DupeChecker - Duplikate im Source finden v1.3
Zitat:
|
Re: DupeChecker - Duplikate im Source finden v1.3
Hallo alle,
es ist eine neue Version 1.3.3 verfügbar mit einigen neuen Optionen (hat leider nichts mit dem Scrollen zu tun ;) ), siehe editiertes ![]() |
Re: DupeChecker - Duplikate im Source finden v1.3
Ein Menu mit den wichtigsten Funktionen wäre auch noch ne tolle Sache.
Und ein Hilfe-Fenster fehlt auch. |
Re: DupeChecker - Duplikate im Source finden v1.3
Das ist eine gute Idee für die Zukunft. Bis dahin muss es das Readme tun. Und die Hauptoperationen bestehen im Drücken des Readbuttonns sowie einem Doppelclick auf einer ausgewählten Zeile...
|
Re: DupeChecker - Duplikate im Source finden v1.3
Die verschiedenen Einstellungen in der ini könntest Du auch in ein Optionen-Fenster packen.
|
Re: DupeChecker - Duplikate im Source finden v1.3
Erst einmal - super Idee!! Ich bin vor einiger Zeit zufällig auf dieses Programm gestoßen weil ich genau so etwas gesucht habe, da ich ein Projekt übernommen hab dessen Code in einem katastrophalen Zustand ist und etliche Duplikate enthält.
Es gibt aus meiner Sicht jedoch auch ein paar Sachen zu bemängeln. Positiv:
Gruß, Motzi PS: unter Umständen könnten wir ja auch Ideen austauschen und zusammenarbeiten. :) |
Re: DupeChecker - Duplikate im Source finden v1.3
Zitat:
Zitat:
Die einzigen Anpassungen die stattfinden, sind Entfernen aller Leerzeichen und die Umwandlung in Uppercase jeder Zeile. Diese Strings werden gehashed und nur die Hashs werden dann bei der Analyse verglichen, deshalb auch der Speed. Das kann man natürlich anpassen (z.b. Entfernung von Tabs). |
Re: DupeChecker - Duplikate im Source finden v1.3
Hallo,
wie angekündigt hab ich mein Programm jetzt ebenfalls vorgestellt: ![]() Bei meinem Programm werden Kommentare während des Preprocessings komplett rausgelöscht und unterschiedliche Formatierungen durch Leerzeichen oder Tabs normalisiert. Ich verwende zur Anzeige den VirtualTreeview wodurch die Visualisierung sehr schnell geht - kann ich dir nur empfehlen! Ich hab meine Routine zur Duplikatssuche selbst geschrieben, anfangs sehr naiv (brauchte in etwa so lang wie deine erste Version) und hab sie dann Stück für Stück immer weiter verbessert bis ich sie jetzt soweit optimiert habe, dass sie sogar schneller ist als deine. *stolzbin* :) Allerdings hab ich (noch) keine Progressbar drinnen, also ist der Vergleich nicht ganz fair. Würd mich freuen wenn du es dir mal anschaust und einen Kommentar abgibst!:) Gruß, Motzi |
Re: DupeChecker - Duplikate im Source finden v1.3
Hallo Union,
erstmal schließ ich mich dem allgmeinen Thread-Hype an: sehr gute Idee das ganze :) Super wären jetzt folgende Funktionen: - Standardansicht einstellbar oder fest auf Hierarchisch - So wie bei Motzis Tool wäre es super wenn die Minimum-Lines zur Laufzeit geändert werden können - Eine Option, durch welche nur eine Datei gescannt werden kann (das Scannen eines gesamten Projektes sollte aber beibehalten werden) Super wären dann noch die "Königsfunktionen" (ziemlich aufwändig): - Erzeugen von Funktionen/Prozeduren der Codeteile auf Klick unter berücksichtigung der Übergabe von lokalen variablen - Auto-Codeupdate nach dem Erzeugen der Funktionen. Also: Es werden die Funktionen implementiert, und der Restsource angepasst. Nicht wichtig aber nice-to-have: - Eine schönere gui ;) mit zB einstellungsmöglichkeiten, welche sonst über die ini geschaltet werden müssten. Gruß Ansgar |
Re: DupeChecker - Duplikate im Source finden v1.3
Hallo Angos,
Zitat:
Zitat:
Zitat:
Für die "Königsfunktionen" sollte man lieber D2007 verwenden, da hat sich CG schon ein paar Mannjahre daran versucht und es funktioniert ganz gut. Zitat:
Code:
Der Rest wird ja automatisch erzeugt durch Größenänderungen und das Systemmenü:
[Config]
Path=c:\temp\test StartLine=IMPLEMENTATION MinLines=4 Indexed=1
Code:
frmAnalyse.Font.Name=MS Sans Serif
frmAnalyse.Font.Size=8 frmAnalyse.Width=650 frmAnalyse.Height=531 frmAnalyse.pnlMemo.Left=1 frmAnalyse.pnlMemo.Top=259 frmAnalyse.pnlMemo.Width=640 frmAnalyse.pnlMemo.Height=204 frmAnalyse.lvDupe.Columns[0].Width=242 frmAnalyse.lvDupe.Columns[1].Width=184 frmAnalyse.lvDupe.Columns[2].Width=50 frmAnalyse.lvDupe.Columns[3].Width=50 frmAnalyse.lvDupe.Columns[4].Width=50 frmAnalyse.lvDupe.Columns[5].Width=50 frmAnalyse.lvDupe.Columns[6].Width=50 frmAnalyse.tvDupe.Columns[0].Width=400 frmAnalyse.tvDupe.Columns[1].Width=100 frmAnalyse.tvDupe.Columns[2].Width=100 frmAnalyse.Left=360 frmAnalyse.Top=236 frmEdit.Left=328 frmEdit.Top=291 frmEdit.Width=714 frmEdit.Height=420 frmEdit.pnlSource.Left=0 frmEdit.pnlSource.Top=0 frmEdit.pnlSource.Width=334 frmEdit.pnlSource.Height=386 |
Re: DupeChecker - Duplikate im Source finden v1.3
Zitat:
Wie gesagt, ich kann dir die Verwendung des VirtualTreeviews wirklich empfehlen - er ist sehr schnell und vor allem auch sehr flexibel! Gruß, Motzi |
Re: DupeChecker - Duplikate im Source finden v1.3
Hallo,
es ist eine ![]() |
Re: DupeChecker - Duplikate im Source finden v1.3.4
Hallo,
es wäre schön, wenn du madexcept benutzen würdest, bei mi kommt nach einer gewissen Dateizahl eine Schutzverletzung, genau bei 221 Dateien. Korrektur: Es scheint immer bei der letzten Datei zu sein. Mache mal ein try except um dein Progressbar-Code. Hast du das mal mit >200 Dateien geprüft ? Oder einfach mal das Projekt (Quelltext) mal anhängst. Heiko PS: Die Pas-Datei selbst ist es nicht, kopiere ich sie in ein separates Verzeichnis, kann er die Lesen. |
Re: DupeChecker - Duplikate im Source finden v1.3.4
Hallo Heiko,
ich habe jetzt mal einen Test mit Subdirectories gemacht (mit genau der Version 1.3.4.0): Zitat:
Ansonsten werde ich in der nächsten Version mal EurekaLog reinhängen. |
Re: DupeChecker - Duplikate im Source finden v1.3.4
Hallo,
kommt beim ersten Schritt (Einlesen), wenn er unten die Dateien anzeigt. Es ist immer fast am Schluss. Heiko |
Re: DupeChecker - Duplikate im Source finden v1.3.4
Ich habe eine
![]() |
Re: DupeChecker - Duplikate im Source finden v1.3.4.1
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
habe heute mal Dein Tool DupeCheck v 1.3.4.1 "Hoika Edition" runtergeladen. Ist ja ganz nett gemacht. Ich habe aber zwei kleine Anmerkungen :
|
Re: DupeChecker - Duplikate im Source finden v1.3.4.1
Wenn Du die Spalten manuell veränderst, merkt sich das Programm die eingestellten Breiten in einer INI und verwendet sie auch beim nächsten Start, das sollte also eine einmalige Sache sein.
Das Problem mit den mehrfachen Analysen ist mir bekannt, wird in der nächsten Version behoben sein. |
Re: DupeChecker - Duplikate im Source finden v1.3.5
|
Re: DupeChecker - Duplikate im Source finden v1.3.5
Feature-Request:
Die Dateinamen bei Quelle und Ziel sollten ohne den Basispfad angezeigt werden. Das würde helfen, die Unitnamen optisch schneller zu erfassen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:41 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz