Syntaxcheck für Sketches

Hallo comunity,

ich suche schon länger nach einer Software, die einen Syntax- und Logikcheck für einen Arduino Sketch durchführen kann.
Gerade bei Newbies kommt es häufig vor, daß sie z.B. das ";" am Ende vergessen oder logische Fehler in ihre Anweisung einbauen. Solche Fehler sind im fertigen Sketch schwer zu finden und die Ausgabe der Fehlermeldungen bein Kompilieren stimmt häufig auch nicht bzw. weist auf eine falsche Zeile hin.
Trotz aller Sucherei im Netz ist es mir bis dato nicht gelungen, eine vernünftige Lösung zu finden.
Habt ihr eine Ahnung ob bzw. wo es sowas gibt ?
Vielen Dank für alle Tipps !
LG Peter

Im englischen Teil des Forum müssen die Beiträge und Diskussionen in englischer Sprache verfasst werden. Deswegen wurde diese Diskussion in den deutschen Teil des Forums verschoben.

mfg ein Moderator.

Du brauchst doch in der Arduino IDE nur die Ausführlichen Meldungen aktivieren, dann werden solche Fehler beim Compilieren angezeigt.

Was verstehst du darunter?
Der Compiler ist schon deutlich besser geworden und warnt z.B. bei
if ( a = 123 ) { ... }

warning: suggest parentheses around assignment used as truth value [-Wparentheses]

Früher™ hatte ich das Gefühl, der Compiler grinst klammheimlich, wenn man syntaktisch zulässigen Unsinn schreibt. :slight_smile:

Logikfehler wird Dir kein Programm erkennen, da es Deine Logik nicht kennt.
Ansonsten sagt Dir der Compiler mit eingeschalteten ausführlichen Meldungen eigentlich alles.
Wenn beim fehlenden ; die Zeile angeblich nicht stimmt: Es ist die Zeile davor.

Gruß Tommy

Öfter reicht auch strg+T.

Hallo michael_x,
es stimmt schon, daß die detaillierten Meldungen vieles aussagen. Nur ist die Fehlermeldung reichlich unübersichtlich.
Wozu schreibt die Fehlermdldung den kompletten Pfad hin ?
Ich möchte ja nur den geöffneten Sketch checken, da is mir der Pfad völlig wurscht.
Oder hab' ich was übersehen und man kann das abschalten ?

Syntax Fehler findet der Compiler.

Für Logikchecks brauchst du nur deine Unit-Tests ausführen.
Ach du hast keine geschrieben.
Na dann gibts auch keine.

brich dein Programm runter in kleine Einheiten und teste diese.
STRG-T wurde eh schon angesprochen. Oft hilft eine optisch schöne Gliederung schon.
All zu Tiefe if/while/do Schachteln meiden.
Keine Codeduplikate schreiben.

Mit anderen Worten, du suchst jemand, der "das Rad neu erfindet". :wink:
Wenn du dich in die Fehlermeldungen einliest, solltest du damit klar kommen.

Nutzt man VSC + PlatformIO kann man Programmieren wie in der Arduino IDE und Syntaxfehler werden bei der Eingabe direkt im Editor angezeigt. Man muss also nicht erst compilieren um solche Fehler zu bemerken.

Ein Klick auf die Fehlermeldung im Ausgabebereich bringt einen gleich in die Zeile, in der der Fehler wirksam ist. Im Code selber ist der Bereich mit einer kleinen "Schlangenlinie" gekennzeichnet. Wie das genau aussieht, ist von der Konfiguration des Umgebung abhängig.

Das sollte aber die Arduino IDE 2.x eigentlich auch können.

1 Like

Logikfehler.
Wenn Du was zusammenzählst was eigentlich voneinander subtrahiert werden soll, Wer soll den Fehler finden?

In C/C++ sind viele Syntaxvarianten gültig. Viel mehr als daß an als Anfänger glaubt.

Ich sehe die Existenz eines Syntax bzw Logikcheck nicht möglich.
Grüße Uwe

Summa summarum: Sch... !
Da muß ich mich wohl mit den einzelnen Fehlermedungen beschäftigen und für jede die Lösung finden... :woozy_face:
Hast du vielleicht einen Tip, wie ich in der Arduino IDE die Ausgabe der Pfade bei den Fehlermeldungen abschalten kann ? Die stören wirklich die Übersichtlichkeit und sind in meinem Fall definitiv unnötig.

LG Peter

Aahhh ! Danke für den Tipp mit dem Klick auf die Zeile ! Auf den Trichter bin ich noch nicht gekommen !
LG Peter

Ein fehlendes ';' merkt der Compiler ziemlich bald.
Viel schlimmer ist ein ';' zuviel

if ( a>0 ) ;
{
   // dieser Teil wird auch bei a==0 ausgeführt
}

An die langen Pfadnamen solltest du dich besser gewöhnen, und dich auf wichtigeres konzentrieren.

Ist ja von der Syntax nicht falsch ...

Sag ich ja. Das sind Fehler die man nicht so leicht sieht wie ein fehlendes Semikolon.

Der Compiler macht den Syntax-Check, der hier natürlich nicht anschlägt, anders als bei einer fehlenden Klammer oder einem fehlendem Semikolon.

Hier käme die zweite Teilfrage zum tragen.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.