Hi,
erstmal vorweg - ich weiß, dass es so ein Programm vor kurzem schonmal hier gab (
DupeChecker). Tatsächlich hat mich dieses Programm sogar dazu inspiriert meine eigene Version zu schreiben, da ich in einigen Punkten nicht ganz glücklich damit war (siehe dazu mein Posting im Thread zu dem Programm).
Ich habe daher beschlossen mein eigenes Programm zu schreiben und versucht die von mir kritisierten Punkte zu verbessern.
Features:
- Sehr schnelle Duplikatssuche
- Kommentare werden vor dem Vergleichen entfernt -> unterschiedliche Kommentare in identischen Codeblöcken spielen keine Rolle mehr; auskommentierter Code wird nicht als Duplikat erkannt
- "Überflüssige" Leerzeichen werden vor dem Vergleichen ebenfalls entfernt (aus "i : integer ;" wird "i:integer;") -> Unterschiede in der Formatierung werden ignoriert
- Übersichtliche Aufbereitung der Ergebnisse in einem Treeview
Anmerkung: Treeview Einträge die
kursiv sind sind "Subduplikate", sie sind also ein Teil eines größeren Duplikats. Diese werden nur dann angezeigt, wenn sie identisch mit anderen gefundenen Dupliakten sind, die selbst keine Subdupliakte sind.
v0.4.1- Speicherverbrauch wurde drastisch gesenkt
- Geschwindigkeit wurde um das 4-5 fache gesteigert
- Rekursive Suche in Unterordnern kann optional deaktiviert werden
- Comboboxen wurden durch "erweiterte" Versionen ersetzt
- Es wird nun überall der volle Pfad als Hint angezeigt
v0.3.1- Analyse findet nun in einem eigenen Thread statt und kann abgebrochen werden
- Geschwindigkeit wurde nochmals gesteigert
- Speicherverbrauch wurde deutlich reduziert
- Splitter-Problem beseitigt
- Die Schriftart des Treeview wurde auf Verdana umgestellt - damit gibt es keine Probleme mit den kursiven Zahlen mehr.
v0.2.2- Es gibt jetzt eine SettingsForm - die Einstellungen werden in einer ini-Datei und einer txt-Datei gespeichert (siehe weiter unten)
- Alle Sources eines Duplikats können nun in einem eigenen Fenster direkt verglichen werden
- Sowohl im "Compare-Fenster" als auch in der MainForm werden die Duplikate im Source durch eine eigene Hintergrundfarbe gekennzeichnet
- Duplikate die nur aus Keywords bestehen können ignoriert werden
- Geschwindigkeit wurde um das bis zu 4-fache beschleunigt
Folgende Einstellungen sind möglich:
- Minimale Zeilenanzahl
- Extensions der Files die beim Durchsuchen von Ordnern berücksichtigt werden sollen
- Ignorieren von Duplikaten die nur aus Keywords bestehen
- Es sollen nur Zeilen gezählt werden die nicht nur aus einem Keyword bestehen (betrifft minimale Zeilenanzahl)
- Liste der Keywords die ignoriert werden sollen - betrifft die beiden obigen Einstellungen (diese List wird in keywords.txt gespeichert)
v0.1.2- Das Programm kann jetzt auch für ganze Ordner angewendet werden. Dabei werden alle pas und dpr Files aus dem gewählten Ordner und allen Unterordnern zur Duplikatssuche herangezogen.
- Die Duplikatsanzeige wurde korrigiert, es sollten jetzt immer die korrekten Zeilen angezeigt werden
- Das Ergebnis kann nach Files gefiltert werden, dabei werden nur jene Duplikate angezeigt die in dem ausgewählten File vorkommen. Wenn zusätzlich noch "strict" aktiviert ist werden alle Sources aus anderen Files ebenfalls ausgeblendet.
- Optional kann nun das gesamte File im Edit angezeigt werden, das Duplikat wird dabei markiert.
- Während der Duplikatssuche wird jetzt ein Dialog mit Progressbar angezeigt. Im Moment verwende ich noch Application.ProcessMessages damit das UI upgedatet wird was sich natürlich auf die Laufzeit auswirkt. In Zukunft wird das per Multithreading gelöst.
TODO:
- Einstellungsmöglichkeiten - Kommentare beim Preprocessing entfernen, Compiler-Schalter als Kommentar behandeln, ...
- Subduplikate mit "Eltern"-Duplikat verknüpfen
- Eventuell noch bessere Anpassung während des preprocessing um unterschiedliche Formatierungen noch besser auszugleichen
- ...
Gruß, Motzi