![]() |
Re: Unit-Abhängigkeiten visualisieren
UnitUsage OpenSource zu machen war von Anfang an meine Absicht. Allerdings wollte ich das in der momentanen Verfassung des Source-Codes nicht tun, viel zu peinlich. Ich habe sogar schon angefangen, den Code zu überarbeiten, muß allerdings gestehen, daß ich mangels Zeit noch nicht weit gekommen bin, und zu allem Überfluß das Programm in der neuen Form gar nicht mehr richtig funktioniert. (Oh Gott, hab ich noch mein altes Archiv?) Also eigentlich müßte ich es von Grund auf neu schreiben, korrigieren hilft da schon gar nicht mehr.
Lange Rede, kurzer Sinn: Ich habe gestern beschlossen, UnitUsage demnächst in der ursprünglichen Grusel-Form freizugeben. Nur noch sauber einpacken ;) (Aber man darf mich gerne wieder dran erinnern, falls sich in drei Wochen immer noch nichts getan hat...) Gruß Michael |
Re: Unit-Abhängigkeiten visualisieren
hi grizzly,
sind zwar noch keine 3 wochen vorbei, aber frage trotzdem schon mal nach ;) |
Re: Unit-Abhängigkeiten visualisieren
Ich habe mittlerweile meinen alten Source-Code Stand vor meinen Aufräum-Aktionen ausgegraben (uff!) und bin schon dabei, die schlimmsten Sachen auszumerzen. Bei den Sachen, die ich noch kapiere, schreib ich auch noch ein wenig Kommentar rein.
Richtig Aufräumen schaffe ich leider nicht. Design und Architektur lassen sich halt nicht nachträglich einbauen ;) Es sollte also klappen, die drei Wochen werde ich vermutlich nur knapp verfehlen. Noch'n bissl Geduld. Gut Ding will Weile haben. Und UnitUsage auch.... Gruß Michael |
Re: Unit-Abhängigkeiten visualisieren
*push*
Zitat:
|
Re: Unit-Abhängigkeiten visualisieren
Timeline nur knapp gerissen. Version 0.5 ist "fertig". Siehe ersten Eintrag dieses Threads.
Gruß Michael |
Re: Unit-Abhängigkeiten visualisieren
Liste der Anhänge anzeigen (Anzahl: 1)
perfekt danke super :)
hab auch gleich mal 3 kleine änderungen ... Änderung 1 :
Delphi-Quellcode:
Habe diese zwei zeilen in die (IF CompDirValid then) gesetzt, da sonst auch $I berücksichtigt werden, die eigentlich nicht sollten
DelDirective (Zeile 1262)
IF KnownDirective('I') or KnownDirective('INCLUDE') THEN { Include files } Result := ProcessInclude(ActiveCDirPara); // Recursive call! Änderung 2
Delphi-Quellcode:
HINTS und STACKCHECKS hinzugefügt zum array Directive
DelDirective (Zeile 955)
(Long:'HINTS'; Short:' '), (Long:'STACKCHECKS'; Short:' '), Änderung 3
Delphi-Quellcode:
Hab das not mal auskommentiert, warum muß die compilerdirektive als - da sein ?
DelDirective (Zeile 1239)
IF not b THEN BEGIN b := DefList.Find(InvertCompDir(#1+ActiveCDirPara), i); // Check, if inverted compiler directive is known (* IF not b then begin Result := -4; CreateErrorMsg(ErrMsg, SourceFileName, Row, 'Compiler switch '+ copy(ActiveCDirPara, 1, Length(ActiveCDirPara)-1) + ' not specified'); end; *) END; wenn ich schreibe {$IFOPT C+} und C+ nicht gefunden wurde, dann ist die IFOPT ungültig und sollte nicht geparst werden oder ? (und es muß keine C- gesetzt sein oder? so, mein erstes projekt kann er jetzt mal ohne probs parsen, mal mein großes testen ... hab auch mal die zwei units (für BuildGraph) mit einer cache liste beshcleunigt, da die bei mir extrem oft aufgerufen werden ... allerdings ist das dot.exe so langsam, das ich es beim großen projekt nicht erwarten kann das es fertig wird ... (die temp.dot datei hat 4600 zeilen ...)
Delphi-Quellcode:
procedure TForm_Main.BuildUnitCache;
var i : integer; begin unitCache := TStringList.Create; unitCache.CaseSensitive := false; for i:=0 to CheckListBox_Units.Count-1 do if CheckListBox_Units.State[i] IN [cbChecked, cbGrayed] then unitCache.AddObject(UpperCase(CheckListBox_Units.Items[i]), TObject(CheckListBox_Units.State[i])); unitCache.Sorted := TRUE; end; FUNCTION TForm_Main.UnitInGraph(UnitName: string): boolean; { - Unit is patr of the graph? } VAR i : integer; BEGIN Result := false; if unitCache = nil then BuildUnitCache; Result := unitCache.IndexOf(UnitName) >= 0; END; FUNCTION TForm_Main.UnitShowChilds(UnitName: string): boolean; { Show child Units for that Unit? Depends on user setting and result of code analysis ) } VAR i : integer; BEGIN Result := false; if unitCache = nil then BuildUnitCache; i := unitCache.IndexOf(unitName); if i >= 0 then Result := TCheckBoxState(unitCache.Objects[i]) in [cbChecked]; END; also dot.exe dauert nur ca. 30 minuten, dann ist es fertig ... und das bild sieht wirklich lustig aus (ob man da noch was erkennen kann? ;) ) |
Re: Unit-Abhängigkeiten visualisieren
Hui, da regnets aber Vorschläge und Verbesserungen. Super :)
Leider kann ich mir das erst heute abend richtig ansehen. Aber eines interessiert mich doch jetzt schon: 4600 Zeilen im temp.dot? Das bedeutet ja gut 4000 Pfeilchen in der Grafik! Was ist das für ein Projekt? Wieviele Units hängen denn da drin? Das schafft ja kaum die komplette VCL, oder? Gruß und Danke für die Änderungsvorschläge Michael (Wird wohl bald ein 0.51 geben müssen...) |
Re: Unit-Abhängigkeiten visualisieren
ja müssten so 2000 units sein ...
mit (fast) allen komponenten im search path komme ich dann auf eine dot datei mit 26500 zeilen, aber die will ich dem nicht mehr berechnen/zeichnen lassen ;) aber ich brauche das tool hauptsächlich für die kleinen nebenprojekte zum analysieren welche units (bzw. warum diese drinnen sind) und dafür ist es schon fast ganz perfekt ;) |
Re: Unit-Abhängigkeiten visualisieren
Ha, das Bildchen (3 Einträge weiter oben) kenn' ich doch! So sehen bei mir auch manche Projekte aus;)
(Leider zeigt sich da auch schon wieder ein Bug: Die Schriftart ist zu groß :( ) Hatte mir auch schon überlegt, ob ich für solche Projekte nicht noch einen Poster-Druck in das Programm einbauen sollte. Macht sich einfach toll an der Bürowand. Damit die Kollegen mal wissen, wogegen man ankämpft.... Gruß Michael |
Re: Unit-Abhängigkeiten visualisieren
wollte es mal probieren, als WMF exportieren, und dann ins coreldraw rein, das hat ja nen posterdruck
allerdings macht das dot bei den pfeilen ein paar fehler, (sieht zumindest so aus) da gibts ein paar pfeile ohne linien ... leider hab ich das wmf nicht mehr, werds bei gelegenheit noch mal neu machen, und reinzoomen |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:32 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