Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Nicht benötigte Units bereinigen (https://www.delphipraxis.net/209257-nicht-benoetigte-units-bereinigen.html)

Jens01 16. Nov 2021 15:05

AW: Nicht benötigte Units bereinigen
 
@freimatz
Damit wirfst Du die unnötigen Units aus einer Unit heraus, aber nicht aus dem Projekt.

freimatz 16. Nov 2021 15:11

AW: Nicht benötigte Units bereinigen
 
Das ist richtig. Das habe ich nicht berücksichtigt. Wozu das denn braucht - im Gegensatz zu uses zu cleanen - verstehe ich gerade nicht. Bei uns hat jedes Projekt einen eigenen Ordern und alle units liegen darin oder unterhalb.

Jens01 16. Nov 2021 15:19

AW: Nicht benötigte Units bereinigen
 
Im Projekt können auch Units drinstehen, die von keiner Unit genutzt werden. Da verliert man bei einem laufenden Projekt schnell den Überblick, gerade wenn man viel umbaut.

Nathan 18. Nov 2021 13:37

AW: Nicht benötigte Units bereinigen
 
Hallo zusammen

Noch eine Möglichkeit ist über die Compileroption "--symbol-report" von https://wiert.me/2019/01/31/passing-...-symbols-used/

Danach erzeugt der Compiler im DCU Path *.symbol_report Dateien. Sind XML und diese kann man analysieren.
Steht dort dann <uses> Tag ohne Client Nodes. Diese Unit's werden dann nicht verwendet. Beispiel:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<unit name="My.Plan">
  <uses name="Vcl.Grids">
  </uses>
</unit>
Beispielsweise steht in den Uses hier Unit Vcl.Grids, sie wird aber nicht verwendet.
Hatte mal versuche ein Projekt aufzusetzen das diese liest und entsprechend herausfiltert. Aber zeittechnisch nie weiter verfolgt.
Meine ersten Versuche damit liegen unter https://github.com/Thurnreiter/Gener...tDependency.V2

Ziel von mir war es, das im Buildprozess zu automatisieren.

Thx und Gruss
Nathan

Redeemer 19. Nov 2021 00:00

AW: Nicht benötigte Units bereinigen
 
Gerade mal PAL Lite gestartet und folgende Probleme festgestellt:
  • Kennt keine Class Helper und will alle Uses rausschmeißen, die nur deshalb verwendet werden.
  • Kommt bei IfThen zwischen StrUtils und Math durcheinander und schlägt das Entfernen einer der beiden vor, wenn sonst nichts daraus verwendet wird.
  • Unterstützt keine Datenmodule, welche ImageLists, PopupMenus usw. bereitstellen. Diese sind nicht zwangsläufig notwendig, aber es ist schon seltsam, wenn man im Objektinspektor PopupMenus, ImageLists usw. als Wert angezeigt bekommt, die in der zugehörigen Dropdownliste fehlen.
Sind das speziell Probleme der Lite-Version?

Mein Hauptprojekt in der Firma (gut 11 MiB EXE, D2010) war früher erzeugt 300 KB kleiner als compiliert. Jetzt nach dem Löschen von Uses ist es erzeugt etwa so groß wie vorher compiliert und compiliert 50 KB kleiner als erzeugt, also genau andersrum wie vorher und in jedem Fall größer. Sehr seltsam.

Uwe Raabe 19. Nov 2021 09:48

AW: Nicht benötigte Units bereinigen
 
Zitat:

Zitat von Redeemer (Beitrag 1497835)
Kennt keine Class Helper und will alle Uses rausschmeißen, die nur deshalb verwendet werden.

Ich habe das mal mit der Vollversion getestet und bis auf diesen Punkt auch nachvollziehen können. Daher bin ich mir nicht sicher, ob ich das richtig verstanden habe.

Mein Test Case ist eine Unit, die lediglich einen Class Helper enthält, dessen Methode dann in einer anderen Unit benutzt wird:
Delphi-Quellcode:
uses
  System.Classes;

type
  TComponentHelper = class helper for TComponent
  public
    function IsDataModule: Boolean;
  end;
Im Gegensatz zu dem von dir beschriebenen Verhalten, empfiehlt PAL hier nicht die Unit zu entfernen.

Abgesehen von der Lite Version, was ist bei dir anders?

Redeemer 19. Nov 2021 11:04

AW: Nicht benötigte Units bereinigen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hab ein Beispiel angehängt. Unit2 definiert einen Class Helper, deren einzige Methode ich in Unit1 aufrufe. In dem Fall von einem Nachkommen, aber PAL funktioniert meines Wissens auch dann nicht, wenn es sich um die Klasse selbst handelt, die einen Class Helper bekommen hat.

(Das ist D2010.)

Uwe Raabe 19. Nov 2021 13:42

AW: Nicht benötigte Units bereinigen
 
Danke, mit dem Beispiel kann ich es auch mit der Vollversion reproduzieren. Ich werde das an den Entwickler weitergeben.

Redeemer 19. Nov 2021 14:52

AW: Nicht benötigte Units bereinigen
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1497859)
Ich werde das an den Entwickler weitergeben.

Danke. Alle drei?

Uwe Raabe 19. Nov 2021 14:53

AW: Nicht benötigte Units bereinigen
 
Zitat:

Zitat von Redeemer (Beitrag 1497863)
Alle drei?

Na klar.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:33 Uhr.
Seite 2 von 3     12 3      

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