StaticRChecker
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
FunctionCall
Variable
Operator
ArithmeticOperator
AddOperator
SubOperator
MulOperator
DivOperator
ExpOperator
RemainderOperator
FloorOperator
RelationalOperator
GreaterOperator
LesserOperator
GreaterEqOperator
LesserEqOperator
EqualOperator
UnequalOperator
InOperator
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.