AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte PHP Inspection Unit

PHP Inspection Unit

Ein Thema von mirage228 · begonnen am 1. Nov 2004 · letzter Beitrag vom 19. Aug 2007
Antwort Antwort
Seite 12 von 14   « Erste     2101112 1314   
Benutzerbild von mirage228
mirage228
Registriert seit: 23. Mär 2003
Hallo,

ich habe mich die letzter Zeit ein wenig mit regulären Ausdrücken beschäftigt. Daraus ist die folgende Unit entstanden.

Mit ihr ist es möglich eine PHP Datei zu analysieren. Dabei werden Klassen und Interfaces mit deren Methoden und Variablen aufgelistet, sowie Methoden ohne Klassenbezug und eingebundene Dateien (über include, require, etc.).
Ab Version 1.9 gibt es auch eine vollständige Unterstützung für Konstanten jeglicher Art (define oder PHP5-Klassenkonstanten).

Das ganze wird hierarchisch in einer Klassenstruktur zusammengefasst. Die für Benutzer relevante Klasse sollte die Klasse TPHPSource in der Unit uPHPInspector.pas sein. Ihr wird beim Konstruktor der PHP Quelltext übergeben und daraus werden die Klassen etc. herausgeparsed. Die anderen Klassen in der Unit sollten nicht direkt instanziert werden.
Die Verwendung der Eigenschaften der einzelnen Klassen sollte relativ einfach sein. Bei Rückfragen, bitte hier in den Thread schreiben.

Zum Parsen verwende ich, wie gesagt, reguläre Ausdrücke. Da die native Delphi Bibliothek Hier im Forum suchenTRegExpr in einem für mich wichtigem Punkt nicht ganz vollständig war, bin ich auf die Wrapperklasse von http://www.renatomancuso.com umgestiegen. Der einzige Nachteile daraus ist der größere overhead, da Anwendungen die PCRE.dll mitliefern müssen, die mit knapp 200 KB zu Buche schlägt.

Neu ab Version 1.2:
Es lässt sich nun eine Syntaxprüfung durchführen. Dazu muss man die Funktion SyntaxCheck der Klasse TPHPSource aufrufen. Dabei kann man zwischen reiner Syntaxprüfung und einer vollständigen Ausführung der Datei wählen. Bei der Syntaxprüfung werden nur rein syntaktische Fehler erkannt. Nicht vorhandene Include-Dateien oder undefinierte Funktionen werden nicht erkannt. Dazu muss der erste Parameter auf TRUE gesetzt werden.
Im Zweiten Parameter "FileName" kann noch eine Datei zur Syntaxprüfung übergeben werden (Die Datei wird nicht automatisch von TPHPSource geparsed!)
Wichtig beim Testen eurer Sources ist, dass ihr die <? und ?> nicht vergessen dürft, da die Syntaxprüfung ansonsten immer = TRUE ergibt (der Text wird dann einfach ausgegeben ohne geparsed zu werden). Zudem wird euer Source dann nicht vom PHP Inspector geparsed, wenn die PHP-Tags (<? .. ?>) fehlen (ab Version 1.6).
Das Verhalten kann durch die StrictPHPTagCheck Eigenschaft beeinflusst werden.

Im Anhang befinden sich nun:
  • PHPInspector.zip Der "PHP Inspector" in der Version 2.6 (PCRE.dll und Wrapper Units included; Version 5.0 vom 26. Oktober 2004)
  • sample_application.zip Eine Beispielanwendung, samt Source.
  • php_source_analyzer.jpg Ein Screenshot der Beispielanwendung.

Freue mich auf euer Feedback

mfG
mirage228
Miniaturansicht angehängter Grafiken
php_source_analyzer_685.jpg  
Angehängte Dateien
Dateityp: zip phpinspector_160.zip (130,1 KB, 272x aufgerufen)
Dateityp: zip sample_application_661.zip (334,9 KB, 300x aufgerufen)

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
 
DSeven
 
#111
  Alt 28. Mär 2005, 00:21
Hallo,

also zur Zeit für mich das wichtigste ist die Portierung zu .NET da ich die klasse unbedingt in meinen C# Editor benötige und einige probleme beim portieren habe.

Würde das gehen oder muss ich mich weiterhin mit den problem einer portierung von Delphi zu C# quälen?

cya
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

 
Delphi 2010 Professional
 
#112
  Alt 28. Mär 2005, 09:06
Hi,

ich habe bereits eine (fast) vollständige Portierung vorgenommen (der Version 2.1), musste aber feststellen, dass der angeblich PCRE kompatbile RegEx von .NET keine Modifier ?R für Rekursion unterstützt und der ist ja zum Parsing hier für mich sehr wichtig.
(Siehe auch mein Thread dazu hier in der DP)

Ich müsste dann die Wrapper- und Importunits zur PCRE.dlls umschreiben (P/Invoke), es sei denn Du weisst eine Möglichkeit den Modifier ?R nach .NET zu bringen...

mfG
mirage228
David F.
  Mit Zitat antworten Zitat
DSeven
 
#113
  Alt 29. Mär 2005, 17:14
Hmm es währe ziemlich umständlich bzw. viel Arbeit Per P/Invoke die komplette Unit nach C# zu bringen.
Ich werde mich diesbezüglich mal informieren und mal schaune wie man das problem lösen kann.

cya
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

 
Delphi 2010 Professional
 
#114
  Alt 23. Mai 2005, 15:38
Hallo,

heute gibt es eine (kleine ) neue Version - Version 2.4.

Es gab u.U. einen Fehler bei den Positionen eines Konstrukts.

Die gesamte Liste der Änderungen:
  • Fehler bei Entity-Positionen behoben, falls Text vor einem PHP-Tag war
  • Fehler bei Entity-Positionen behoben, falls es mehrere PHP-Tag Paare gab
  • Einige kleinere Optimierungen an der FindEntity() Routine

Den Download gibts, wie gehabt, im ersten Beitrag

mfG
mirage228
David F.
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

 
Delphi 2010 Professional
 
#115
  Alt 3. Okt 2005, 09:24
Hallo,

nach einer kleinen Pause gibt es nun wieder eine neue Version. Es ist die Version 2.5.

Folgende Änderungen gibt es:
  • Fehler in der Kommentarerkennung behoben, falls ein \" oder \' Escape-Zeichen im Kommentar eingebunden war. In diesem Fall hatte der Parser das Parsing ab diesem Punkt abgebrochen.
  • Fehler bei der Erkennung von Include-Dateien behoben, wenn diese kein Semikolon oder Zeilenende am Ende hatte, wie z.B. <? include "somefile.htm" ?>
  • Es werden nun auch "Unix-Shell" style Kommentare akzeptiert (# <Kommentar>)
  • Neuer Compilerschalter: $NODUPLICATES (Standardmäßig aus). Wenn dieser eingeschaltet wird, dann fügt der Parser Klassen, Interfaces und Methoden nicht mehr dem Ergebnis hinzu, falls es diese bereits gefunden wurde. Sprich, es gibt keine doppelten Klassen, Interfaces oder Methoden mehr. Dies beschleunigt die Parsing-Zeit bei mehreren doppelten Klassen um einiges, ansonsten liget die Parsing-Zeit minimal über dem normalen Niveau.

Den Download gibts im ersten Beitrag

mfG
mirage228
David F.
  Mit Zitat antworten Zitat
Benutzerbild von Pr0g
Pr0g

 
Delphi 7 Personal
 
#116
  Alt 3. Okt 2005, 10:25
  Mit Zitat antworten Zitat
Benutzerbild von Airblader
Airblader
 
#117
  Alt 4. Jan 2006, 01:46
Habs mit ein paar älteren Dateien getestet und funktioniert bei mir alles

air
Ingo Bürk
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

 
Delphi 2010 Professional
 
#118
  Alt 4. Feb 2006, 12:40
Hallo,

Nach einer kleinen "Pause" gibts nun wieder eine neue Version (2.6). Es handelt sich nur um Fehlerkorrekturen, Features sind in dieser Version keine hinzugekommen.

Hier die komplette Liste der Änderungen:
  • Fehler beim Erkennen von Konstrukten in Strings (mit ' oder ") behoben
  • Falsche Kommentarerkennung behoben, falls ein Konstrukt nur teilweise in einem Kommentar war
  • Namen der "SyntaxErrors" Eigenschaft korrigiert (war "SxntaxErrors")
  • HTML Zeilenumbrüche, die von PHP erzeugt werden, werden nun aus der SyntaxErrors-Liste gefiltert

Wenn keine Fehler mehr gefunden werden, dann werde ich die neue Version auf "offiziell" veröffentlich (meine Homepage, Torry.net etc.).

mfG
mirage228
David F.
  Mit Zitat antworten Zitat
thabaker

 
Turbo Delphi für Win32
 
#119
  Alt 17. Jul 2007, 17:06
Lebt das Projekt noch oder gibt es eine aktuelle Alternative?
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

 
Delphi 2010 Professional
 
#120
  Alt 17. Jul 2007, 18:46
Zitat von thabaker:
Lebt das Projekt noch oder gibt es eine aktuelle Alternative?
Japp, das Projekt lebt noch und es gibt bald wieder eine neue Version, die einige Bugs behebt und neue Features hinzufügt, stay tuned

mfG
mirage228
David F.
  Mit Zitat antworten Zitat
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 10:25 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