AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Die Delphi-IDE Tool für DFM-Auswertung Komponenten-"Vernetzung"?
Thema durchsuchen
Ansicht
Themen-Optionen

Tool für DFM-Auswertung Komponenten-"Vernetzung"?

Ein Thema von Codehunter · begonnen am 26. Feb 2019 · letzter Beitrag vom 27. Feb 2019
Antwort Antwort
mjustin

Registriert seit: 14. Apr 2008
3.005 Beiträge
 
Delphi 2009 Professional
 
#1

AW: Tool für DFM-Auswertung Komponenten-"Vernetzung"?

  Alt 26. Feb 2019, 09:38
Mein OpenCTF Test Framework geht in diese Richtung.

Damit kann man z.B. alle 'verdächtigen' Komponenten finden bei denen eine Eigenschaft wie OnClick oder DataSource nicht zugewiesen sind. Das ganze arbeitet über dynamisch erzeugte DUnit-Testcases, man kann es daher in bestehende DUnit Testsuites integrieren.

Einige Tests sind bereits vordefiniert, man kann sich aber beliebige neue schreiben. Beispiel: alle Menüitems müssen einen OnClick-Handler haben, es sei denn sie enthalten ein Untermenü oder sie sind nur ein Separator:
Delphi-Quellcode:
function TMenuItemTests.Accepts(const Component: TComponent): Boolean;
begin
  Result := inherited Accepts(Component);

  // exclude menu items if they are separator lines or have submenu entries
  if Result then with TMenuItem(Component) do
    Result := (not IsLine) and (Count=0);
end;

procedure TMenuItemTests.AddTests;
begin
  inherited;

  CheckEvents(['OnClick']);
end;
https://github.com/michaelJustin/openctf
Michael Justin

Geändert von mjustin (26. Feb 2019 um 09:47 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.050 Beiträge
 
Delphi 12 Athens
 
#2

AW: Tool für DFM-Auswertung Komponenten-"Vernetzung"?

  Alt 26. Feb 2019, 09:47
Damit kann man z.B. alle 'verdächtigen' Komponenten finden bei denen eine Eigenschaft wie OnClick oder DataSource nicht zugewiesen sind.
Der Pascal Analyzer von Peganza hat einen ähnlichen Missing Property Report und dazu passend auch einen inversen Property Value Report. (siehe Online Doku)

Das ist aber bei Weitem nicht das, was Cody sich vorstellt, oder?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.005 Beiträge
 
Delphi 2009 Professional
 
#3

AW: Tool für DFM-Auswertung Komponenten-"Vernetzung"?

  Alt 26. Feb 2019, 10:04
Damit kann man z.B. alle 'verdächtigen' Komponenten finden bei denen eine Eigenschaft wie OnClick oder DataSource nicht zugewiesen sind.
Der Pascal Analyzer von Peganza hat einen ähnlichen Missing Property Report und dazu passend auch einen inversen Property Value Report. (siehe Online Doku)

Das ist aber bei Weitem nicht das, was Cody sich vorstellt, oder?
Mit den Möglichkeiten sich die Tests maßzuschneidern (an Coding Standards anzupassen) hat OpenCTF eigentlich schon auch Vorteile gegenüber einem statischen Report oder einer vollständigen Visualisierung der Abhängigkeiten, die man dann doch wieder erst einmal 'zu Fuß' durcharbeiten muss, und das ja auch nach jeder Codeänderung.

Und: anstatt das DFM auszuwerten wird bei OpenCTF das instanziierte Formular oder Datenmodul betrachtet, d.h. Änderungen die sich durch das FormCreate ergeben sind auch berücksichtigt.

Aber sicher hat jedes Tool seine Vorzüge, es ist sicher interessant eine gelayerte Strukturdarstellung einer DFM mit allen Beziehungen der Komponenten zu erhalten.
Michael Justin
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Tool für DFM-Auswertung Komponenten-"Vernetzung"?

  Alt 26. Feb 2019, 10:13
Damit kann man z.B. alle 'verdächtigen' Komponenten finden bei denen eine Eigenschaft wie OnClick oder DataSource nicht zugewiesen sind.
Der Pascal Analyzer von Peganza hat einen ähnlichen Missing Property Report und dazu passend auch einen inversen Property Value Report. (siehe Online Doku)

Das ist aber bei Weitem nicht das, was Cody sich vorstellt, oder?
Das müsste ich mir im Detail anschauen. Spontan würde ich sagen, das was ich suche wäre genau der umgekehrte Fall: Nicht undefinierte Properties ausfindig machen sondern definierte, die auf TComponent-Abkömmlinge verweisen die auf dem Form/Datenmodul usw. liegen. Wenn dann Komponenten über bleiben, die keine "Connection" zu einer anderen Komponente/Control haben, dann wäre sie potentiell verwaist. Gibt natürlich auch solche wie z.B. das gute alte TXPManifest, die naturgemäß Einzelkinder sind. Aber zumindest hätte man mehr Überblick.

Das beschriebene Problem habe ich an vielen Stellen in einem großen Projekt, das ich sukzessive übernehme. Viele Altlasten und viel "mausprogrammiertes" Zeug.
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.005 Beiträge
 
Delphi 2009 Professional
 
#5

AW: Tool für DFM-Auswertung Komponenten-"Vernetzung"?

  Alt 26. Feb 2019, 10:21
Wenn dann Komponenten über bleiben, die keine "Connection" zu einer anderen Komponente/Control haben, dann wäre sie potentiell verwaist.
Beispiele wären eine DataSource, die von keinem anderen Control mehr benutzt wird, oder eine Action, die keinem Button/Menüpunkt/... zugeordnet ist?
Michael Justin
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Tool für DFM-Auswertung Komponenten-"Vernetzung"?

  Alt 26. Feb 2019, 10:39
Wenn dann Komponenten über bleiben, die keine "Connection" zu einer anderen Komponente/Control haben, dann wäre sie potentiell verwaist.
Beispiele wären eine DataSource, die von keinem anderen Control mehr benutzt wird, oder eine Action, die keinem Button/Menüpunkt/... zugeordnet ist?
Bekannte Beispiele, ja. In meinem Fall sind es weniger bekannte Drittanbieter-Kompos wie z.B. Styles von Devexpress u.ä. die schnell mal entstehen wenn man unbedacht auf eins dieser "Neues [xyz] erstellen" im OI oder Formulardesigner-Kontextmenü klickt. Die betreffende Komponente erscheint dann irgendwo im ohnehin unübersichtlichen Gewölle von Komponenten und wird vergessen. Nicht jede gut gemeinte Komfortfunktion ist auch wirklich sinnvoll...

das was ich suche wäre genau der umgekehrte Fall: Nicht undefinierte Properties ausfindig machen sondern definierte,
Deswegen ja auch dieser Hinweis:
und dazu passend auch einen inversen Property Value Report
Schau ich mir zu ruhiger Stunde genauer an. Vielleicht ist ja was für mich.
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
Benutzerbild von MyRealName
MyRealName

Registriert seit: 19. Okt 2003
Ort: Heilbronn
674 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Tool für DFM-Auswertung Komponenten-"Vernetzung"?

  Alt 26. Feb 2019, 17:24
Muss man aber vorsichtig sein, denn es kann auch sein, dass eine Komponente von aussen verlinkt wird, nicht nur im Quelltext der eigentlichen Unit.
Da müsste man nicht nur schauen, wo die Unit verwendet wird, dondern auch mit welchem Instanznamen das geschieht.

Bsp.:

in der Originalunit :

Code:
var
  MyDataModule: TMyDataModule;
in einer anderen unit :

Code:
uses
  dmMyDataModule;

begin
  MyDM := TMyDataModule.Create(nil);
  MyDM.ObscureComponent.ExecuteStrangeThings;
  MyDM.Free;
end;
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.367 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Tool für DFM-Auswertung Komponenten-"Vernetzung"?

  Alt 27. Feb 2019, 05:09
Noch fieser ist es, wenn eine Komponente nur dadurch verwendet wird, dass sie auf dem Formular bzw. Datenmodul liegt, sprich dass wie z.B. bei einigen Webkomponenten einfach alle Komponenten nach einem bestimmten Typ durchsucht werden.

Bekannte Beispiele, ja. In meinem Fall sind es weniger bekannte Drittanbieter-Kompos wie z.B. Styles von Devexpress u.ä. die schnell mal entstehen wenn man unbedacht auf eins dieser "Neues [xyz] erstellen" im OI oder Formulardesigner-Kontextmenü klickt. Die betreffende Komponente erscheint dann irgendwo im ohnehin unübersichtlichen Gewölle von Komponenten und wird vergessen.
Deshalb würde ich auch niemals Quelltext einchecken ohne diesen vorher genau zu überprüfen, sprich ich schaue mir jede geänderte Zeile an und prüfe, ob diese auch so gewollt war und zu der einzucheckenden Änderung gehört. Und das mache ich natürlich auch bei .dfm oder .dproj Dateien.

Ich sehe leider oft, dass einige das nicht machen und einfach einchecken nachdem eine Änderung kurz getestet wurde. Das ist finde ich ähnlich fahrlässig wie beim Auto auf Gehör zu fahren.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.050 Beiträge
 
Delphi 12 Athens
 
#9

AW: Tool für DFM-Auswertung Komponenten-"Vernetzung"?

  Alt 26. Feb 2019, 10:22
das was ich suche wäre genau der umgekehrte Fall: Nicht undefinierte Properties ausfindig machen sondern definierte,
Deswegen ja auch dieser Hinweis:
und dazu passend auch einen inversen Property Value Report
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort


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 15:13 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