Der Assistent Neues Plug-in-Projekt generiert ein Java™-Paket und eine Java-Klasse für die Implementierung von benutzerdefinierten EGL-Regeln.
Sie müssen dieser Klasse Ihren eigenen Java-Code hinzufügen, um die Analyse ausführen zu können, die für Ihre angepasste Regel erforderlich ist.
package com.example;
import java.util.ArrayList;
import java.util.List;
public class EglRule extends com.ibm.etools.egl.codereview.rules.AbstractEglAnalysisRule {
@Override
public List<com.ibm.etools.edt.core.ast.Node> performRule(com.ibm.etools.edt.core.ast.Node baseNode) {
final List<com.ibm.etools.edt.core.ast.Node> tokens = new ArrayList<com.ibm.etools.edt.core.ast.Node>();
// Diese Methode wird immer aufgerufen und ihr wird das schlanke AST-Modell und nicht das gebundene IR-Modell übergeben.
// Verwenden Sie das AST-Modell, wenn weniger Informationen als vom IR-Modell bereitgestellt benötigt werden.
// Ist das IR-Modell erwünscht, geben Sie entweder null oder eine leere Tokenliste für diesen Return zurück und
// platzieren Sie den Code zur Analyse des IR-Modells in der IR-Version von 'performRule' (siehe unten).
// Soll zusätzlicher Text der angezeigten UI-Nachricht des markierten Knotens hinzugefügt werden, können Sie stattdessen für Token
// List<com.ibm.etools.egl.codereview.NodeStringResult> verwenden. Mit der Klasse NodeStringResult können Sie
// den Knoten und die Zeichenfolge festlegen, die an die markierte Position in der angezeigten Nachricht angehängt wird.
baseNode.accept(new com.ibm.etools.egl.codereview.rules.AbstractASTRuleVisitor() {
@Override
public boolean visit(com.ibm.etools.edt.core.ast.AddStatement clause) {
// TODO: Knoten auf Regelverstöße prüfen und betreffende Knoten der Tokenliste hinzufügen wie zum Beispiel:
tokens.add(clause);
// 'true' zurückgeben, wenn Visits für Objekte innerhalb dieses Objekts verarbeitet werden sollen, andernfalls 'false'.
return false;
}
});
return tokens;
}
@Override
public List<com.ibm.etools.edt.core.ir.api.Element> performRule(com.ibm.etools.edt.core.ir.api.Element element) {
final List<com.ibm.etools.edt.core.ir.api.Element> tokens = new ArrayList<com.ibm.etools.edt.core.ir.api.Element>();
// Damit diese Methode aufgerufen wird, muss der Analyseparameter "RUN_AS_IR" im Manifest auf "true" gesetzt werden.
// Anschließend wird diese Klasse unter Übergabe des gebundenen IR-Modells zusätzlich zum schlanken AST-Modell aufgerufen.
// Verwenden Sie das IR-Modell, wenn mehr Informationen als die durch das AST-Modell gelieferten benötigt werden.
// Beachten Sie jedoch, dass die Verwendung des IR-Modells nicht so schnell wie die des AST-Modells ist.
// Soll zusätzlicher Text der angezeigten UI-Nachricht des markierten Elements hinzugefügt werden, können Sie stattdessen für Token
// List<com.ibm.etools.egl.codereview.ElementStringResult> verwenden. Mit der Klasse ElementStringResult können Sie
// das Element und die Zeichenfolge festlegen, die an die markierte Position in der angezeigten Nachricht angehängt wird.
element.accept(new com.ibm.etools.egl.codereview.rules.AbstractIRRuleVisitor() {
@Override
public boolean visit(com.ibm.etools.edt.core.ir.api.AddStatement clause) {
// TODO: Knoten auf Regelverstöße prüfen und betreffende Knoten der Tokenliste hinzufügen wie zum Beispiel:
tokens.add(clause);
// 'true' zurückgeben, wenn Visits für Objekte innerhalb dieses Objekts verarbeitet werden sollen, andernfalls 'false'.
return false;
}
});
return tokens;
}
}