[Tool] Klammerfehler finden.

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hallo zusammen,


    da hier doch recht oft das Thema "Finden von Klammerfehlern" aufgegriffen wird und scheinbar bis heute keiner eine patente Lösung gefunden hat, Fehler optimal, schnell und zielgenau zu finden, habe ich mir gedacht, entwickel ich mal ein kleines PHP Snippet, was euch die Arbeit beim Finden von Klammerfehlern erleichtern soll.


    Das Programm habe ich bisher nur durch absichtlich erzeugte Klammerfehler getestet, daher weiß ich noch nicht, wie es sich im Ernstfall verhält. Bisher kann es NUR UND AUSSCHLIESSLICH öffnende und schließende Klammern von public Funktionen finden, da sich das Programm noch in der Testphase findet!


    WICHTIG!!! Am Ende eures Scripts muss ein "// EOF" (ohne die Anführungszeichen) stehen, damit das Tool weiß, dass das Script aufhört. Diese Methode war arbeitstechnisch leichter und ich bin eine faule Ratte ;)




    Ein Beispiel, wie der Quelltext (einer meiner Testquelltexte) aussehen könnte:
    public OnPlayerCommandText (playerid, cmdtext[])
    {
    if (strcmp(asdf, asdf, true, 0))
    {
    while ($x > $y)
    {
    und so weiter
    }
    }
    }


    public OnPlayerConnect (playerid)
    {
    if (playerid == 1)
    {
    {
    dies und das;
    }
    }


    public OnPlayerDisconnect (playerid)
    {
    if (playerid == 1)
    {
    dies und das;
    }
    }
    // EOF


    Das Script wird euch nicht sagen, in welcher Zeile sich der Klammerfehler befindet, sondern lediglich in welcher Funktion. Auch wird noch nicht genannt ob eine öffnende oder schließende Klammer fehlt, kommt aber noch.
    Für die Testphase denke ich allerdings, wird es viel Arbeit abnehmen. Sofern das Tool denn nach meinen Vorstellungen läuft.


    Je mehr Leute es testen, desto schneller kann ich also Probleme beheben. Feedback ist natürlich äußerst erwünscht.


    Für diejenigen, die Angst um ihr Script haben, ich könnte es klauen o.Ä. stelle ich auch gerne den Sourcecode bereit um das ganze lokal laufen zu lassen.


    Für erste Tests etc könnt ihr das Tool auf http://www.deine-lieblingsgamer.eu/bracketfinder finden.


    Gruß
    LeijaT


    Mein CS:GO Server: 62.75.168.39:27016


    Ich bin so hungrig, dass ich vor lauter Durst nicht weiß, was ich rauchen soll - so müde bin ich!
    Freedom is just another word for 'Nothing left to lose'

  • Naja, wenn ich einen Klammerfehler durch eine Auskommentiete Klammer habe, so hilft mir das System nicht, genauso zeigt das system klammerfehler an, wenn keine da sind aufgrund auskommentierter Klammern.

  • Bau eine funktion ein...


    Klammer { soviel mal Vorhanden und Klammer } soviel mal vorhanden, setze eine Ausgabe dahinter und lass es dann so erscheinen:


    Es sind 44 { Klammern vorhanden
    Es sind 43 } Klammern vorhanden


    Resultat: Es fehlt eine } Klammer

  • Ich habe mal sowas ähnliches gehabt, Vorallem Auskommentiere Klammern führen schnell zu bugs.


    Naja Mein system ist ein Einrücker, der im endeffekt den Scriptcode richtig einrügt, doch hat er auch am Ende gesagt, wenn beispielsweise eine { oder } fehlt, nur nicht wo aber es ist leicht einzubauen, dass mein tool es auch anzeigt.


  • Dann kann man auch Notepad++ benutzen, das wäre unnötig :thumbdown:


    €dit: Satz falsch xD

  • Also wenn ich einen Klammerfehler mache kommt da:


    Code
    Klammerfehler in Funktion N/A gefunden!


    und jetzt :huh:

    Wäre nett, wenn du mir den Code via PN zukommen lässt, damit ich das beheben kann.


    Naja, wenn ich einen Klammerfehler durch eine Auskommentiete Klammer habe, so hilft mir das System nicht, genauso zeigt das system klammerfehler an, wenn keine da sind aufgrund auskommentierter Klammern.

    Achja, auskommentierte Klammern, an die habe ich garnicht gedacht *g* Wird direkt mal nachgearbeitet.

    Vorerst denke ich reicht es, wenn das Tool die Funktion aufzeigt. Im späteren Verlauf sorge ich dann noch dafür, dass die genaue Zeilenangabe angezeigt wird - oder zumindest in welchem Clause sich das Problem befindet.


    Mein CS:GO Server: 62.75.168.39:27016


    Ich bin so hungrig, dass ich vor lauter Durst nicht weiß, was ich rauchen soll - so müde bin ich!
    Freedom is just another word for 'Nothing left to lose'

  • Ich habe das nocheinmal angegeben (etwas anders) und jetzt kommt sowas (ich habe den Bereich makiert der Fail ist):



    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Kaliber: Danke für den Hinweis, werde mich darum kümmern.


    Teldabis: Liegt daran, dass das Tool bisher nur auf public Funktion reagiert. Bedeutet: Wenn eine Funktion nicht ausdrücklich als public deklariert ist, ignoriert das Script die Zeilen bis zur nächsten public-Deklaration.


    Edit: Das Problem von Kaliber sollte jetzt gelöst sein. Auch mehrere öffnende Klammern pro Zeile werden wahrgenommen.


    Mein CS:GO Server: 62.75.168.39:27016


    Ich bin so hungrig, dass ich vor lauter Durst nicht weiß, was ich rauchen soll - so müde bin ich!
    Freedom is just another word for 'Nothing left to lose'

    Einmal editiert, zuletzt von LeijaT ()

  • Ich kann alles mögliche Eingeben. Wie auch 2 Klammern nebeneinander, was jetzt ja gefixxt sein sollte. Bei mir kommt immer, dass kein Fehler gefunden wurde.
    Habe auch dieses // EOF benutzt, aber brauche so ein Programm eh nicht.

  • Wäre trotzdem nett, wenn du - auch wenn du selbst das Tool nicht benötigst - mir via PN oder hier im Thread zukommen lässt, was du eingegeben hast, damit ich die Fehler beheben kann.


    Mein CS:GO Server: 62.75.168.39:27016


    Ich bin so hungrig, dass ich vor lauter Durst nicht weiß, was ich rauchen soll - so müde bin ich!
    Freedom is just another word for 'Nothing left to lose'