AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte UnitOptimizer

UnitOptimizer

Ein Thema von stahli · begonnen am 25. Mai 2018 · letzter Beitrag vom 15. Okt 2019
Antwort Antwort
Seite 10 von 10   « Erste     8910
Benutzerbild von stahli
stahli
Registriert seit: 26. Nov 2003
Ich bin dabei, ein Tool aufzubauen, das Units sortiert und Code ergänzt.

Es ist quasi eine Klassenvervollständigung, Codeformatierung und Codesortierung in einem.

Hier mal ein aktueller Zwischenstand als Video: https://youtu.be/cfKa3wuoEd0

Eine direkte Codeformatierung (Einrückung) habe ich noch nicht drin, will das aber auch noch ergänzen. Die anderen Features gehen für mich aber vor.

Die Abkürzung "prop" könnte man auch mit "property" ausschreiben lassen. Ebenso sind optional andere Voreinstellungen möglich, wenn dies gewünscht würde. Ich bin zunächst erst einmal von meinen Wünschen ausgegangen.

Ich würde das später sehr gern kommerziell anbieten, wenn es Nachfrage gibt.
Für öffentliche Tests ist es noch etwas früh. Dazu muss ich noch einiges ausbauen und ausbessern.
Sofern jemand Erfahrungen mit den OTA hat und daran mitarbeiten möchte, dann gebt Bescheid...



Ich hatte dazu schon einen Thread, der sich aber speziell auf die Interface-Unterstützung bezogen hatte. Da das Tool aber Units allgemein bearbeitet habe ich hier einen neuen Thread eröffnet.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
 
Benutzerbild von stahli
stahli

 
Delphi 10.3 Rio
 
#91
  Alt 12. Okt 2019, 23:54
Ich habe von hsg mal zwei Units mit einigen Herausforderungen bekommen .
Da sind halt schon einige Stile drin, die ich so nicht kenne. Jetzt will ich dem Optimizer beibringen, damit umzugehen und die Unit u.a. neu zu sortieren, ohne das Styling dabei zu zerschießen...

Hier dazu mal ein neuer Zwischenstand.

Um z.B. Beschreibungen über Methoden diesen zuzuordnen, müssen sie als "echte Kommentare" gekennzeichnet werden.
Dann werden sie zur Methode zugehörig interpretiert und mit verschoben (der Optimizer passt ja regelmäßig die Reihenfolgen der Methoden an).

Im Gegensatz dazu sieht man unten, dass "Auskommentierungen" wie Code behandelt werden. Wenn "auskommentierter Code" über einer Metho steht, wird er dieser also nicht zugeordnet und würde entsprechend nicht mit der Methode umsortiert.

Wenn man die Funktionalität des Optimizers nutzen möchte, muss man also Kommentare immer passend auszeichnen.

Echte Kommentare werden mit ":" oder "!" eingeleitet, wobei ':' noch in den Codefluss eingerückt wird und bei "!" keine automatische Anpassung erfolgt (hier also der Programmierer komplett selbst das Aussehen bestimmt).

Ich denke, mit dieser Anforderung (echte Kommentare besonders zu kennzeichnen) sollte man leben können. Nur so kann der Optimizer diese unterschiedlich behandeln.
Miniaturansicht angehängter Grafiken
uo1.png  

Geändert von stahli (13. Okt 2019 um 15:13 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

 
Delphi 10.3 Rio
 
#92
  Alt 14. Okt 2019, 23:15
Anbei mal eine zweite Testversion.
Ich habe noch einiges ergänzt, aber es ist noch nicht fertig.

Richtigen Kommentar sollte man unbedingt auch so kennzeichnen damit er nicht als auskommentierter Code interpretiert wird.
Vor allem, wenn er über einer Methode steht und dieser zuzuordnen ist.

Das kann dann so aussehen:
Delphi-Quellcode:
//: Text
{: Text :}
(*: Text :*)
Das ist aber das Einzige, das man beachten muss.


Im Moment macht noch Probleme, wenn Schlüsselwörter wie uses, var, const, begin usw. nicht allein in einer Zeile stehen.
Daran arbeite ich dann als nächstes.


@hsg
Schau mal, das sollte jetzt schon besser aussehen.
Angehängte Dateien
Dateityp: zip UnitOptimizer.zip (1,20 MB, 4x aufgerufen)

Geändert von stahli (14. Okt 2019 um 23:23 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

 
Delphi 10.2 Tokyo Enterprise
 
#93
  Alt 15. Okt 2019, 06:30
Bei Verwendung von etwas umfangreicheren Generics stürzt das Tool schlicht ab bzw. hängt mit voller Prozessorkernauslastung.

Dort kommen Konstrukte wie dieses vor (ob es daran liegt weiß ich nicht):
Delphi-Quellcode:
    class procedure RegisterStatusData<T, I: ICustomDataEntry; C: class, constructor, ICustomDataEntry; K: ICustomDataList<T>>;
...
class procedure TApplicationInterface.RegisterStatusData<T, I, C, K>;
begin
  RegisterInterfaceProvider<T>(
    function...
...
Die Unit kann ich leider nicht veröffentlichen, da sie Firmeneigentum ist.

// EDIT:
Jetzt bin ich etwas erstaunt. Die Ursache ist ein eigentlich absolut simpler Codeteil. Interessanterweise klappt es sobald ich eine der drei Propertys entferne. Der Code dürfte doch keinen Parser vor irgendwelche Probleme stellen...
Delphi-Quellcode:
unit Common.Core.ApplicationInterface;

interface

type
  TApplicationInterface = class
  public
    class property InterfaceProvider: IInterfaceProvider read GetInterfaceProvider;
    class property DummyProvider: IInterfaceProvider read GetDummyProvider;
    class property CurrentProvider: IInterfaceProvider read GetCurrentProvider;
  end;

implementation

end;
(Es ist egal, ob die Methodendeklarationen und -rümpfe dabei sind oder nicht.)
Sebastian Jänicke

Geändert von jaenicke (15. Okt 2019 um 06:37 Uhr)
  Mit Zitat antworten Zitat
hoika

 
Delphi XE4 Professional
 
#94
  Alt 15. Okt 2019, 06:40
Hallo,
zumindestens fehlt ein uses für IInterfaceProvider.
Heiko

Geändert von hoika (15. Okt 2019 um 07:15 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

 
Delphi 10.2 Tokyo Enterprise
 
#95
  Alt 15. Okt 2019, 07:21
Das habe ich alles herausgeworfen, im Original lässt sich die Unit natürlich kompilieren. Ich glaube auch nicht, dass das eine Rolle spielt, denn sonst müsste man ja angeben können wo diese Units liegen usw., zumal es dem Parser egal sein sollte. Die Verknüpfungen werden ja auf höherer Ebene erstellt.
Sebastian Jänicke
  Mit Zitat antworten Zitat
TigerLilly

 
Delphi 10.3 Rio
 
#96
  Alt 15. Okt 2019, 10:23
Richtigen Kommentar sollte man unbedingt auch so kennzeichnen damit er nicht als auskommentierter Code interpretiert wird.
Vor allem, wenn er über einer Methode steht und dieser zuzuordnen ist.

Das kann dann so aussehen:
Delphi-Quellcode:
//: Text
{: Text :}
(*: Text :*)
Das finde ich problematisch, weil es schon einige Konventionen für Kommentar gint. MMX hat //1 und //2, PasDoc hat auch ein paar Konventionen. Wäre es nicht besser, den kommentierten Code extra zu kennzeichnen? Oder das konfigurierbar zu machen?
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

 
Delphi 10.3 Rio
 
#97
  Alt 15. Okt 2019, 10:53
Ich danke Euch.


@jaenicke

class var, methodes und properties sowie anonyme Methoden werden noch nicht unterstützt.

Ich schaue mir das aber mal als nächsten Punkt an.
Kann wieder ein paar Tage dauern. Ab morgen muss ich wieder arbeiten... :-/


@TigerLilly

Optional könnte man das erwägen.
Allerdings nutzt man Ctrl-# ja meist, um mal eine Zeile oder Abschnitt schnell "raus zu schmeißen". Da wäre es umständlich, noch etwas an der Standardformatierung ändern zu müssen.

Dagegen ist es seltener (zumindest für mich), dass man erläuternden Kommentar schreibt.
Da man dort ohnehin etwas neues schreibt, kann man dort auch ein zusätzliches Zeichen einfügen.

Aber da kann man nochmal die sinnvollste Lösung abstimmen.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

 
Delphi 10.3 Rio
 
#98
  Alt 15. Okt 2019, 10:54
Das finde ich problematisch, weil es schon einige Konventionen für Kommentar gint. MMX hat //1 und //2, PasDoc hat auch ein paar Konventionen. Wäre es nicht besser, den kommentierten Code extra zu kennzeichnen? Oder das konfigurierbar zu machen?
Insbesondere XMLDOC gibt hier schon von Delphi-Seite einen Standard vor: Kommentare in der XML-Dokumentation
Uwe Raabe
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

 
Delphi 10.3 Rio
 
#99
  Alt 15. Okt 2019, 11:12
Das habe ich schon dabei.

Der Kommentar wird mit dem Code bündig eingerückt und mehrere Leerzeichen nacheinander werden auf eins verkürzt.
Könnte ich noch ändern, falls nötig.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 10 von 10   « Erste     8910

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