AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Freware: Programm zur Ermittlung von Unit-Abhängigkeiten
Thema durchsuchen
Ansicht
Themen-Optionen

Freware: Programm zur Ermittlung von Unit-Abhängigkeiten

Ein Thema von MaBuSE · begonnen am 1. Jun 2006 · letzter Beitrag vom 16. Feb 2007
Antwort Antwort
Seite 4 von 5   « Erste     234 5      
Benutzerbild von MaBuSE
MaBuSE
Registriert seit: 23. Sep 2002
Hallo,

ich habe heute mal schnell ein Programm geschrieben, das die Abhängigkeiten der Units in einem Delphi Programm ermittelt und diese dann darstellt.

Das Programm hat 2 Memo Felder.
In dem linken Memo werden alle verwendete Units des Projektes aufgelistet.
Units, die zu Delphi gehören, werden mit einem vorgestellten * gekennzeichnet.
(Die Dateien von Delphi7 im $(DELPHI)\lib Verzeichnis sind in der "DelphiLib.list" Datei aufgelistet, die vom Programm beim Start eingelesen wird.)
Units, zu denen kein Quelltext gefunden wurde, werden mit einem vorgestellten # gekennzeichnet.
In dem rechten Fenster werden die Abhängigkeiten in folgender Form dargestellt:
Code:
"Project1.dpr" -> "Unit1.pas";
"Project1.dpr" -> "Unit2.pas";
"Project1.dpr" -> "Unit3.pas";
"Unit1.pas" -> "Unit2.pas";
"Unit1.pas" -> "Unit3.pas";
"Unit2.pas" -> "Unit1.pas";
Dieses Format kann auch durch Graphvis ( http://www.graphviz.org/ ) in eine Grafik umgewandelt werden.
("dot.exe" und einige von dot.exe benötigte dll's liegen dem unitscanner bei.)



Anleitung zur Nutzung des Programmes:
  • Programm starten
  • scan Button drücken und ein Delphi Projekt auswählen (*.dpr)
  • warten
  • mit dem "call dot" Button kann eine Graphik erzeugt werden, die dann auch angezeigt wird.
Das Programm wurde zu meinem Eigenbedarf geschrieben, aber vieleicht findet es ja noch jemand interesannt

Da ich vom 06.06.06 bis 07.07. im Urlaub bin, kann ich erst ab 10.07. antworten.

Viel Spaß

ReleaseNotes:
  • v1.0: Erste Version
  • v1.1: Mehrsprachigkeit, Speichern der Optionen in Ini Datei, Suchpfade werden nun Unterstützt
Angehängte Dateien
Dateityp: zip unitscanner_187.zip (1,17 MB, 178x aufgerufen)
Dateityp: zip unitscanner11_119.zip (1,19 MB, 158x aufgerufen)
Dateityp: zip unitscanner11upd_163.zip (252,3 KB, 60x aufgerufen)
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
 
Benutzerbild von himitsu
himitsu

 
Delphi 12 Athens
 
#31
  Alt 2. Jun 2006, 17:32
Zitat von MaBuSE:
Wenn man nun die Unit-Abhänigkeiten der RTL und VCL von Delphi an diesem Beispiel darstellt,
kann man sehen, wie "viel" eigentlich in so einem "leeren" Delphi Projekt drin steckt.
(Und warum die Project1.exe so groß ist und die non-vcl Projekte so klein sind.)
Na ja, die Anzahl der Units, die eingebunden werden ist ja nicht so schlimm, aber für veile Dinge in den Units gibt es eine entsprechende InitProzedur im Initialisationsbereich und dieser wird ja auch immer aufgerufen/eingebunden, selbst wenn es garnicht nötig wäre, weil halt nichts davon verwendet wird (davon läßt sich aber die InitProc nicht beeinflussen)

Irgendwo gibt's ja ein kleines TestProg von mir, wo man das auch ganz gut sieht.


[add]
so, da is'es ja ... http://www.delphipraxis.net/internal...=550840#550840


Und "schlimm" is'es ja och noch, weil diese ungenutzten Units/Funktionen auch noch zusätzliche DLLs laden ... nicht daß nur die EXE etwas größer wird, im RAM befindet sich och mehr, als nötig ... mal abgesehn von den zusätzlchen Variablen, Objekten... (noch mehr Speicher halt).

Das mit den Initialisierungsabschnitten kann man och selber mal test ... einfach einige der standardmäßig eingebundenen Units entfernen (es sind ja nicht alle nötig), neu kompilieren (wenn die "wichtigen" Units mit gelöscht sind, geht das sogar noch) und siehe da, die EXE ist kleiner
  Mit Zitat antworten Zitat
Angel4585

 
Delphi 2010 Professional
 
#32
  Alt 7. Jun 2006, 16:01
Könnte man damit auch Projektgruppen scannen?
Martin Weber
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

 
Delphi 12 Athens
 
#33
  Alt 8. Jun 2006, 09:35
Zitat von MaBuSE:
Es werden im Moment z.B. noch keine include Dateien ausgewertet {$I Datei.inc}
Vergiß nicht ... ich verwende statt
{$I Datei.inc}
ein
{$INCLUDE Datei.inc}
und
{$I+} {$I-}
sind keine Include-Direktiven




Das Nachfolgende bitte ignorieren, wenn Graphvis das nicht kann -.-''

Ist es möglich die Verdungslinien optisch unterschiedlich zu machen?
Je nach dem, wo die Unit eingebunden ist (Interface/Implementation)

Zitat von MaBuSE:
Ein Projekt von mir hatte ca. 100 Units, das jpg war ca 25000 Pixel breit. Die linke obere Ecke ist dann in der Regel weiß
Kann man dem Graphvis nicht sagen wie groß es zeichnen soll?

Es muß ja auch nicht immer alles nebeneinander sein ... 2-3 Zeilig wäre ja och zu ertragen ^^


PS: eigentlich wäre es ja nicht nötig, daß im Threadtitel nochmals "Freeware" drinsteht, aber wenn, dann wäre es keine schlechte Idee, wenn es mit 2 "e" geschrieben würde ... dachte schon einen der Gewinnspielschreibfehler entdeckt zu haben
  Mit Zitat antworten Zitat
Angel4585

 
Delphi 2010 Professional
 
#34
  Alt 12. Jul 2006, 12:49
So.. jetz bist wieder da hab ich gesehn.. wo bleiben die Updates?
Martin Weber
  Mit Zitat antworten Zitat
Benutzerbild von MaBuSE
MaBuSE

 
Delphi 10 Seattle Enterprise
 
#35
  Alt 12. Jul 2006, 14:24
Zitat von Angel4585:
So.. jetz bist wieder da hab ich gesehn.. wo bleiben die Updates?
Nach 5 Wochen Urlaub muß ich erst mal die hier aufgelaufene Arbeit abarbeiten. Danach werde ich mich wieder an den Scanner setzen.
  Mit Zitat antworten Zitat
Benutzerbild von MaBuSE
MaBuSE

 
Delphi 10 Seattle Enterprise
 
#36
  Alt 17. Jul 2006, 18:51
Zitat von Angel4585:
So.. jetz bist wieder da hab ich gesehn.. wo bleiben die Updates?
Die Update sind im 1. Post

Folgende Änderungen gibt es:
  • leichte Änderung an der Optik
    (Optionen sind in den Optionen Dialog gewandert)
  • Optionen werden in der ini gespeichert.
  • Mehrsprachigkeit
    Die Sprachen Englisch und Deutsch sind schon in der ini Datei enthalten.
    Es sollte für Euch leicht möglich sein andere Sprachen zu implementieren.
    Wenn Ihr den Scanner in eine andere Sprache übersetzt habt, könnt Ihr mit gerne Eure ini Datei schicken, ich werde es dann allen zur Verfügung stellen.
  • ach ja, es werden nun Suchpfade unterstüzt

Bitte testet mal ob alles funktioniert.

Danke

ps: Der Bug, das das jpg angezeigt wird, obwohl es noch nicht fertig ist, existiert immer noch. ;-(
  Mit Zitat antworten Zitat
Benutzerbild von MaBuSE
MaBuSE

 
Delphi 10 Seattle Enterprise
 
#37
  Alt 18. Jul 2006, 10:09
Zitat von Angel4585:
So.. jetz bist wieder da hab ich gesehn.. wo bleiben die Updates?
Hallo zusammen,

grizzly hat auch ein Programm mit ähnlicher Funktionalizät geschrieben.
Er hat das Programm gestern Aben hier in der DP als Freeware veröffentlicht.
Beitrag: "Unit-Abhängigkeiten visualisieren (mit 40KB screenshot)"

Das Programm sieht auch sehr schön aus.

Da sein UnitUsage auch die GraphVis Tools benutzt, sehen die Ergebnisse sehr ähnlich aus.

Mein Tool werde ich trotzdem weiterentwickeln.

UnitScanner wird auf jeden Fall noch um diverse Parameter gergänzt um die komplette Funktionalität auch von der Kommandozeile aus nutzen zu können.

Ich habe auch noch ein paar andere Ideen
  Mit Zitat antworten Zitat
Benutzerbild von MaBuSE
MaBuSE

 
Delphi 10 Seattle Enterprise
 
#38
  Alt 15. Feb 2007, 13:25
Zitat von MaBuSE:
Mein Tool werde ich trotzdem weiterentwickeln.
Da habe ich den Mund wohl etwas zu voll genommen. Ich hatte (und habe im Moment) leider keine Zeit

-- Projekt eingestellt --
  Mit Zitat antworten Zitat
grizzly

 
Delphi XE4 Professional
 
#39
  Alt 15. Feb 2007, 14:28
[Homer Simpsons Voice] Nein! [\Homer Simpsons Voice]

Das kenn' ich irgendwoher. Ich wollte von meinem Tool ja auch den Sourcecode rausgeben - nach einer kleinen Überarbeitung, versteht sich. Aber der Code entpuppte sich als dermaßen häßlich, daß ich nach etlichen Aufräumaktionen jetzt vor einem nicht funktionierenden Trümmerhaufen stehe. Und Zeit finde ich auch keine.
Da war es immer beruhigend, daß nochmal wer an so einem Tool arbeitet...

Nuja, ein eingestelltes Projekt kann man ja irgendwann mal wiedererwecken - vielleicht ist Dir ja doch noch irgendwann mal langweilig.

Grüße
Michael
  Mit Zitat antworten Zitat
Benutzerbild von MaBuSE
MaBuSE

 
Delphi 10 Seattle Enterprise
 
#40
  Alt 16. Feb 2007, 09:32
Zitat von grizzly:
[Homer Simpsons Voice] Nein! [\Homer Simpsons Voice]
Das kenn' ich irgendwoher. Ich wollte von meinem Tool ja auch den Sourcecode rausgeben - nach einer kleinen Überarbeitung, versteht sich. Aber der Code entpuppte sich als dermaßen häßlich, daß ich nach etlichen Aufräumaktionen jetzt vor einem nicht funktionierenden Trümmerhaufen stehe. Und Zeit finde ich auch keine.
Da war es immer beruhigend, daß nochmal wer an so einem Tool arbeitet...
Nuja, ein eingestelltes Projekt kann man ja irgendwann mal wiedererwecken - vielleicht ist Dir ja doch noch irgendwann mal langweilig.
Das Problem ist, dass ich so viele Ideeen habe, was ich alles programmieren könnte, aber so wenig Zeit.
Da Du aber ja auch noch so ein Projekt hast, habe ich mir keine weiteren Gedanken gemacht
Im Moment arbeite ich (privat, abends, zuhause) an einer ClearCase Integration für Delphi 2006.
Also eine Schnittstelle zur Versionsverwaltung.

Ich werde das Projekt CC4D definitiv als OpenSource veröffentlichen. Ich achte dann schon beim Programmieren drauf, das es kein Schrott wird. Bei dem Tool zur Ermittlung der Unit Abhängigkeiten habe ich das nicht gemacht. Das ist fürchterlich programmiert. Trotzdem habe ich den Quellcode an jemand weitergegeben. Seit dem redet der nicht mehr mit mir Wenn ich den Code hier in (bzw. für) der Firma produziert hätte, würde ich warscheinlich eine Abmahnung bekommen.

Aus dem cc4d Projekt wird auch ein Tutorial entstehen: "Wie klinke ich mich erfolgreich in die IDE ein"

Mit folgenden Themen:
  • Grundlagen der OTA
  • Wie komme ich in den Splash Screen von Delphi (leicht)
  • Wie komme ich in den About Dialog von Delphi (leicht)
  • Wie kann man sich in das Menü einklinken (leicht)
  • Wie erzeugt man eine Toolbar (mitel)
  • Wie kann man auf Ereignisse der IDE reagieren (Notifier, mittel)
  • Übersichten, welcher Notifier ist für welches Ereignis
  • ...
Trotzdem bleibt das Unit Abhänigkeiten Projekt beendet.

Wenn ich das Thema noch mal aufgreife, dann mach ich es gleich richtig richtig.
(universeller Parser, der nicht nur Pascal, sondern dann auch C#, ... kann)
Dann wird es aber ein neues Projekt.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 5   « Erste     234 5      


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 01:05 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz