StaticRChecker

Aus JACK Wiki
Zur Navigation springen Zur Suche springen

Der StaticRChecker ermöglicht statische Checks auf Programmcode und verwendet dazu Abfragen auf dem Syntaxgraphen. Um einen statischen Check mit dem Checker durchzuführen, muss eine einzelne Datei mit Prüfregeln ("Rule File") angegeben werden. Die Regeln werden in dieser Datei im XML-Format organisiert und verwenden die Sprache GReQL für Abfragen auf dem Syntaxbaum. Der zu prüfende Programmcode entstammt dem Editor aus dem Browserfenster.

Aufbau

Die verschiedenen Konstrukte der Sprache R werden durch eine GReQL-Grammatik defininert. Diese unterscheidet sich in Knoten und Kanten. Die Grammatik ist typisiert und hierarchisch aufgebaut. Beispielsweise ist "AssignmentOperator" die Oberklasse von Left- bzw. RightAssignmentOperator, welche wiederum von den spezifischen Zuweisungsoperatoren die Oberklassen sind. Dadurch lassen sich allgemeinere Abfragen erstellen, in denen nach dem Vorkommen eines (beliebigen) Zuweisungsoperators statt nach mehreren spezifischen gefragt wird.

Knoten

Kategorie 1

Prog

ParameterList

AnonParameterList

IndexList

DoubleIndexList

Indexing

UnaryExpression

Negative

Positive

Element

Literal

BooleanLiteral
ComplexLiteral
IntegerLiteral
NumericLiteral
StringLiteral
NullLiteral

ID

Auswertung eines Regelsatzes

Bei der Durchführung des statischen Checks wird zunächst der abstrakte Syntaxgraph der abgegebenen Lösung erzeugt und anschließend alle Regeln angewendet. Alle erzeugten Fehlernachrichten werden als Ausgabe des statischen Tests gesammelt. Die vergebene Punktzahl ergibt sich aus den Punkten der einzelnen Regeln, wobei die Gesamtsumme der Punkte in der Regeldatei stets auf 100 normiert wird. D.h., im oben gezeigten Beispiel erhält eine korrekte Lösung 100 Punkte, während eine Lösung, die die erste Regel verletzt, nur 67 Punkte erhält. Tritt während des Checks ein technischer Fehler auf, wird der Check abgebrochen und die Lösung mit einem "internal error" als fehlerhaft markiert.