StaticRChecker: Unterschied zwischen den Versionen

Aus JACK Wiki
Zur Navigation springen Zur Suche springen
(Kategorie Checker hinzugefügt)
 
(5 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
=== Beschreibung ===
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.
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 =
=== 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.
Die verschiedenen Konstrukte der Sprache R werden durch eine [[GReQL]]-Grammatik definiert. Diese unterscheidet sich in Knoten und Kanten. Die [[R-GReQL-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 ==
=== 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.
=== Context ===
 
==== Prog ====
 
==== ParameterList ====
 
==== AnonParameterList ====
 
==== IndexList ====
 
==== DoubleIndexList ====
 
==== Indexing ====
 
=== UnaryExpression ===
 
==== Negative ====
 
==== Positive ====
 
=== Element ===
 
==== Literal ====
 
===== BooleanLiteral =====
 
===== ComplexLiteral =====
 
===== IntegerLiteral =====
 
===== NumericLiteral =====
 
===== StringLiteral =====
 
===== NullLiteral =====
 
==== ID ====
 
===== FunctionCall =====
 
===== Variable =====
 
==== Operator ====
 
===== ArithmeticOperator =====


====== AddOperator ======
==Tools==
[[Media:GReQL-Referencecard.pdf|GReQL-Referencecard]]


====== SubOperator ======
[[category:Checker]]
 
====== MulOperator ======
 
====== DivOperator ======
 
====== ExpOperator ======
 
====== RemainderOperator ======
 
====== FloorOperator ======
 
===== RelationalOperator =====
 
====== GreaterOperator ======
 
====== LesserOperator ======
 
====== GreaterEqOperator ======
 
====== LesserEqOperator ======
 
====== EqualOperator ======
 
====== UnequalOperator ======
 
====== InOperator ======
 
===== LogicalOperator =====
 
====== AndOperator ======
 
====== OrOperator ======
 
====== NotOperator ======
 
====== AndOperatorFirstElement ======
 
====== OrOperatorFirstElement ======
 
===== AssignmentOperator =====
 
====== LeftAssignmentOperator ======
 
======= LeftAssignmentOperator1 =======
 
======= LeftAssignmentOperator2 =======
 
======= LeftAssignmentOperator3 =======
 
======= LeftAssignmentOperator4 =======
 
====== RightAssignmentOperator ======
 
======= RightAssignmentOperator1 =======
 
======= RightAssignmentOperator2 =======
 
= 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.

Aktuelle Version vom 23. Oktober 2018, 11:35 Uhr

Beschreibung

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 definiert. Diese unterscheidet sich in Knoten und Kanten. Die R-GReQL-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.

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.

Tools

GReQL-Referencecard