Syntax-checker(Lint) für Ruby?

Hi,
kennt jemand einen Syntax-Checker für die Programmiersprache Ruby? So etwas wie der Lint für C++. Das Problem ist, dass man in Ruby z.B. keine Variablen deklarieren muss und Ruby Duck-typing unterstützt. Dadurch fallen einige Fehler nicht so schnell auf (Variable mal groß mal klein geschrieben). Ich hätte also gerne ein Tool, dem man das Ruby Skript gibt und welches dann zum Beispiel checkt, ob eine Variable geschrieben wird, die nie gelesen wird o.ä.

Grüße

Ralph

Hi,

kennt jemand einen Syntax-Checker für die Programmiersprache
Ruby? So etwas wie der Lint für C++. Das Problem ist, dass man
in Ruby z.B. keine Variablen deklarieren muss und Ruby
Duck-typing unterstützt. Dadurch fallen einige Fehler nicht so
schnell auf (Variable mal groß mal klein geschrieben).

Verstehe ich nicht. Dann meckert doch Ruby
mit „undefined local variable or method `…’ for …“,
oder nicht?

Ich hätte also gerne ein Tool, dem man das Ruby Skript gibt und
welches dann zum Beispiel checkt, ob eine Variable geschrieben
wird, die nie gelesen wird o.ä.

Das hat, glaube ich, Ruby::RDT( http://rubyeclipse.sourceforge.net/features.rdt.html )
mit drin.

Ich hatte mal ein wenig in Ruby rumprobiert
und denke, für mich ist das vollkommen
unbrauchbar:

  1. kein klares Scoping von Variablen-Namen
  2. 0 == true (!) und 0.00 == true (!) usw.
  3. ‚+‘ zur Zeichenkettenaddition

usw.

Na ja, ich nehme eigentlich hauptsächlich
(und lieber) das „Original“, aus dem Ruby
(aus welchen Gründen auch immer) damals
abgeleitet wurde.

Grüße

CMБ

Hallo,

kennt jemand einen Syntax-Checker für die Programmiersprache
Ruby? So etwas wie der Lint für C++. Das Problem ist, dass man
in Ruby z.B. keine Variablen deklarieren muss und Ruby
Duck-typing unterstützt. Dadurch fallen einige Fehler nicht so
schnell auf (Variable mal groß mal klein geschrieben).

Verstehe ich nicht. Dann meckert doch Ruby
mit „undefined local variable or method `…’ for …“,
oder nicht?

Aber erst zur Laufzeit, und das ist hässlich. Schliesslich passiert es durchaus, dass bei den ersten paar Testläufen bestimmte Stellen des Codes gar nicht durchlaufen werden.

Um das nachzuvollziehen, kann man das kleine Programm

foo(a);

durch

ruby -c

jagen, die Antwort ist „Syntax OK“ - PWND!

Das Problem bei solchen „dynamischen“ Scriptsprachen ist, dass sie z.B. in einem eval() eine Variablendeklaration haben können, die - sofern dadurch kein neuer scope ensteht - den Rest des Programmes beeinflussen können. D.h. ein Programm, das probiert zur Compilezeit auf das Vorhandensein von Variablen zu testen, würde false-positives liefern.

Grüße,
Moritz

Um das nachzuvollziehen, kann man das kleine Programm

foo(a);

durch

ruby -c

jagen, die Antwort ist „Syntax OK“

Hi,
danke für die Info. Das Problem ist, das diese Ausführung keine weiteren Regeln prüft, d.h. wenn das Probelmm compiliert, dann liefert auch der Syntax checker ok, oder?

Was aber z.B. lint bei C Programmen noch kann:

  • Lint erkennt z.B. bei "i=4; if i

Hallo,

Was aber z.B. lint bei C Programmen noch kann:

  • Lint erkennt z.B. bei "i=4; if i

Warum eigentlich Ruby?

Hi, die Sprache ist leider nicht diskutierbar, der Server versteht nur Ruby…

Wobei einen „Lint“-Checker für Perl kenn ich auch nicht…

Grüße,

Ralph

Hallo,

Wobei einen „Lint“-Checker für Perl kenn ich auch nicht…

Du solltest dich nicht auf „Lint“ konzentrieren, sondern auf „static code analyzer“ oder „static code checker“.

Grüße,
Moritz

1 Like

Hallo

Warum eigentlich Ruby?

Hi, die Sprache ist leider nicht diskutierbar, der Server
versteht nur Ruby…

OK

Wobei einen „Lint“-Checker für Perl
kenn ich auch nicht…

use strict;
use warnings;

Das Problem bei „zu genauem“ Lint ist,
dass Konstrukte wie

 x = 4;
 if(x bereits in C++ (beware of Perl)
nicht so einfach zu 'linten' sind,
da '