AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte DoubleSource - Duplikate im Source finden v0.4.1

DoubleSource - Duplikate im Source finden v0.4.1

Ein Thema von Motzi · begonnen am 5. Mär 2008 · letzter Beitrag vom 15. Mär 2008
Antwort Antwort
Seite 1 von 4  1 23     Letzte » 
Benutzerbild von Motzi
Motzi
Registriert seit: 6. Aug 2002
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
Angehängte Dateien
Dateityp: zip doublesource_102.zip (550,1 KB, 112x aufgerufen)
 
angos

 
Delphi 10.4 Sydney
 
#2
  Alt 5. Mär 2008, 07:48
Moin Motzi,

hab DoubleSource und Dupecheck angeschaut. Zu den Verbesserungen hab ich in Unions Thread was geschreiben, da dort die Diskussion am regsten ist.


Anonsten auch hier: Sehr schönes einfaches Tool
Ansgar
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union
Online

 
Delphi 7 Enterprise
 
#3
  Alt 5. Mär 2008, 07:49
Hallo Motzi,

funktioniert schon ziemlich gut, trotz des frühen Stadiums. Folgendes ist mir aufgefallen:
  • Die Sourcecode-Anzeige der einzelnen Duplikate im Fenster "Original Code" fängt eine Zeile zu spät an, obwohl die Zeilennummern im Treeview stimmen und die Anzeige des "normalisierten" Source ebenfalls.
  • Das mit den Subduplikaten ist etwas verwirrend.
  • Die Zahlen der kursiven Schrift werden abgeschnitten im Treeview (Null sieht dann aus wie ein "C")
  • Das Fenster läßt sich zu klein einstellen, es sollten Sizeconstraints gesetzt sein
  • Der Startbutton ist etwas riesig, ich habe den fast übersehen
Die Unterstützung von Ordnern sollte unbedingt rein, denn sonst ist es in der Praxis nicht zu gebrauchen (es sei denn man kopiert ein komplettes Projekt in eine riesige Datei).
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

 
Delphi 2007 Enterprise
 
#4
  Alt 5. Mär 2008, 08:07
Wollst Du Dich nicht mit Union (DupeChecker) zusammentun und Eure Energie bündeln?

Warum soll jeder für sich seinen Kuchen backen, wenn man gemeinsam vielleicht besser zum Ziel kommt?
Werft Eure Ideen in einnen Topf, beratet darüber und teilt Euch die Arbeit auf.
Klaus E.
  Mit Zitat antworten Zitat
taaktaak

 
Delphi 7 Professional
 
#5
  Alt 5. Mär 2008, 08:21
Moin, Moin Motzi.
Für den bisherigen Zeitaufwand schon recht passabel. Die Optik ist noch optimierbar; z.B. verschwindet der Splitter, wenn man ihn nach rechts bewegt.
Zwei Controls wecken mein besonderes Interesse: Der "Spinbutton" (oder wie nennt sich das Teil) mit der diagonalen Teilung und die interessante Verbindung von TreeView und Grid. Wo finde ich diese Komponenten - die würde ich zu gern auch verwenden!
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry

 
Delphi 2006 Professional
 
#6
  Alt 5. Mär 2008, 08:30
Zitat von RavenIV:
Wollst Du Dich nicht mit Union (DupeChecker) zusammentun und Eure Energie bündeln?

Warum soll jeder für sich seinen Kuchen backen, wenn man gemeinsam vielleicht besser zum Ziel kommt?
Werft Eure Ideen in einnen Topf, beratet darüber und teilt Euch die Arbeit auf.
wäre eine Variante. Allerdings ist es auch so das Konkurenz das Geschäft belebt. Jeder will den anderen überbieten und dadurch kommen meinst auch schneller Updates auf den Markt etc.
Jens
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

 
Delphi 2007 Enterprise
 
#7
  Alt 5. Mär 2008, 08:40
Zitat von SirThornberry:
Zitat von RavenIV:
Wollst Du Dich nicht mit Union (DupeChecker) zusammentun und Eure Energie bündeln?

Warum soll jeder für sich seinen Kuchen backen, wenn man gemeinsam vielleicht besser zum Ziel kommt?
Werft Eure Ideen in einnen Topf, beratet darüber und teilt Euch die Arbeit auf.
wäre eine Variante. Allerdings ist es auch so das Konkurenz das Geschäft belebt. Jeder will den anderen überbieten und dadurch kommen meinst auch schneller Updates auf den Markt etc.
Aber jeder muss das Rad neu erfinden.
Das geht zu Lasten der Entwicklungsgeschwindigkeit.
Klaus E.
  Mit Zitat antworten Zitat
taaktaak

 
Delphi 7 Professional
 
#8
  Alt 5. Mär 2008, 09:02
Das sind alles nachvollziehbare Argumente, aber es gibt sicherlich auch eine ganze Reihe von Delphi-Interessierten, die das alles nur so zum Spaß machen und die es reizt, selbstformulierte Ziel zu erreichen. Da ist es dann m. E. nicht schädlich, das Rad neu zu erfinden. Gerade in diesem Forum wird ja immer wieder (mit Recht) angemerkt, dass man durch einfaches Übernehmen von fremden Code schlecht oder auch gar nicht lernt.
Ich persönlich mache das nur so nebenbei und nur zum Spaß; und erfinde meine Räder auch immer wieder neu. Häufig kommen dabei unprofessionelle und schlechte Lösungen heraus - aber es sind dann Lösungen, die man selbst erfunden hat und die dann mit wachsenden Fähigkeiten optimiert werden können.
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von Motzi
Motzi

 
Delphi XE2 Professional
 
#9
  Alt 5. Mär 2008, 10:05
Erstmal danke für die vielen Kommentare!
Zitat von Union:
Die Sourcecode-Anzeige der einzelnen Duplikate im Fenster "Original Code" fängt eine Zeile zu spät an, obwohl die Zeilennummern im Treeview stimmen und die Anzeige des "normalisierten" Source ebenfalls.
Ist mir gestern nach schreiben des Beitrags auch aufgefallen - ist inzwischen gefixt.
Zitat von Union:
Das mit den Subduplikaten ist etwas verwirrend.
Ich weiß.. ich werd versuchen noch eine bessere Beschreibung dazu zu finden...
Zitat von Union:
Die Zahlen der kursiven Schrift werden abgeschnitten im Treeview (Null sieht dann aus wie ein "C")
Ok, ich mach die Spalten ein bisschen breiter..
Zitat von Union:
Das Fenster läßt sich zu klein einstellen, es sollten Sizeconstraints gesetzt sein
Gute Idee...
Zitat von Union:
Der Startbutton ist etwas riesig, ich habe den fast übersehen
Ich weiß... irgendeine Idee wo man ihn besser hin platzieren könnte?
Zitat von Union:
Die Unterstützung von Ordnern sollte unbedingt rein, denn sonst ist es in der Praxis nicht zu gebrauchen (es sei denn man kopiert ein komplettes Projekt in eine riesige Datei).
Schon klar, das Konzept wurde auch von Anfang an dafür designed, dass beliebig viele Files unterstützt werden. Ich bin im Moment nur am Überlegen was sinnvoller ist - einen Ordner auswählen und alle Files aus diesem Ordner + Unterordner durchsuchen, oder aber eine dpr-Datei laden und alle Files aus der uses-Liste nehmen...

Ich hab das Programm vor allem deswegen geschrieben weil es mich einerseits interessiert hat sowas selbst zu machen und ich es andererseits auch gerade sehr gut brauchen kann. Wir können in Zukunft aber auch gern gemeinsam an einer Version arbeiten!

Zitat von taaktaak:
Für den bisherigen Zeitaufwand schon recht passabel. Die Optik ist noch optimierbar; z.B. verschwindet der Splitter, wenn man ihn nach rechts bewegt.
Wird korrigiert!
Zitat von taaktaak:
Zwei Controls wecken mein besonderes Interesse: Der "Spinbutton" (oder wie nennt sich das Teil) mit der diagonalen Teilung und die interessante Verbindung von TreeView und Grid. Wo finde ich diese Komponenten - die würde ich zu gern auch verwenden!
Die erste Komponente ist "TJvSpinEdit" aus der JVCL und bei dem Treeview handelt es sich um den absolut genialen VirtualTreeview von Mike Lischke. Ich bin ein großer Fan dieser Komponente und verwende sie eigentlich in jedem meiner Projekte. Seit Delphi 2005 wird sie auch in der IDE eingesetzt.

Gruß, Motzi
Manuel Pöter
  Mit Zitat antworten Zitat
taaktaak

 
Delphi 7 Professional
 
#10
  Alt 5. Mär 2008, 10:36
Vorschlag zur optischen "Umsortierung":

FileEdit incl. Button in der Breite wie das geniale Grid, ebenso den Start-Button, das Anzeigefenster in voller Fensterhöhe darstellen
Ralph
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:13 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf