LinterCheckAstNode: Bereichsbezogen, global
Die LinterCheckAstNode- API bietet Methoden zum Abrufen von AST-Knotendetails (Abstract Syntax Tree) in Linter-Prüfungen.
Diese API ist im Plugin Instance Scan (com.glide.instance_scan) enthalten und wird im Namespace sn_instance_scan ausgeführt. Weitere Informationen finden Sie unter Instanzscan.
Verwenden Sie die Methoden in dieser Klasse, um Linter-Prüfungen für AST-Knotentypen auszuführen, indem Sie dem Feld Skript im Formular „Linter-Prüfung“Code hinzufügen. Weitere Informationen finden Sie unter Skripts für erweiterte Linter-Prüfung.
Erstellen Sie eine Linterprüfung, um Probleme in einem Skript zu identifizieren. Wenn eine Linter-Prüfung für einen Datensatz ausgeführt wird, wird eine abstrakte Syntaxstruktur für den zugehörigen Code generiert. Sie können die abstrakte Syntaxstruktur verwenden, um Probleme mit dem Code zu analysieren.
Greifen Sie mit dem Objekt Instance Scan „engine.rootNode“ auf Methoden in dieser API zu.
LinterCheckAstNode – getNameIdentifier()
Ruft den Zeichenfolgenwert eines Namensknotentyps ab. Ein Namensknoten stellt einen einfachen Bezeichner dar, der kein Schlüsselwort ist, z. B. ein Funktions- oder Variablenname.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Zeichenfolge | Wenn das Linter-Objekt ein Namensknotentyp ist, geben Sie den Namen als Zeichenfolge zurück. Andernfalls NULL. |
Im folgenden Beispiel wird die incrementWithNode()- Methode der Ergebnis -API in einer Linter-Prüfung verwendet. Verwenden Sie diese Methode im Feld Skript des Formulars „Linter Check“.
(function(engine) {
engine.rootNode.visit(function(node) {
if (node.getTypeName() === "NAME" &&
node.getNameIdentifier() === "soughtFunction" &&
node.getParent().getTypeName() === "CALL") {
engine.finding.incrementWithNode(node);
}
});
})(engine);
LinterCheckAstNode – getParent()
Ruft das übergeordnete Knotenobjekt des aufgerufenen Knotens ab.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Objekt | Übergeordnetes Knotenobjekt des aufgerufenen Knotens. |
Im folgenden Beispiel wird die incrementWithNode()- Methode der Ergebnis -API in einer Linter-Prüfung verwendet. Verwenden Sie diese Methode im Feld Skript des Formulars „Linter Check“.
(function(engine) {
engine.rootNode.visit(function(node) {
if (node.getTypeName() === "NAME" &&
node.getNameIdentifier() === "soughtFunction" &&
node.getParent().getTypeName() === "CALL") {
engine.finding.incrementWithNode(node);
}
});
})(engine);
LinterCheckAstNode – getTypeName()
Ruft den Typ des aufgerufenen Knotens ab.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Zeichenfolge | Typname des aufgerufenen Knotens. Beispielsweise wird ein Funktionsaufruf in der Quelle als Knoten mit dem Typnamen CALLtokenisiert. |
Im folgenden Beispiel wird die incrementWithNode()- Methode der Ergebnis -API in einer Linter-Prüfung verwendet. Verwenden Sie diese Methode im Feld Skript des Formulars „Linter Check“.
(function(engine) {
engine.rootNode.visit(function(node) {
if (node.getTypeName() === "NAME" &&
node.getNameIdentifier() === "soughtFunction" &&
node.getParent().getTypeName() === "CALL") {
engine.finding.incrementWithNode(node);
}
});
})(engine);
LinterCheckAstNode – Visit(Funktion CallbackFunktion)
Greift auf jeden Knoten in der Unterstruktur zu, beginnend mit diesem Knoten, und führt auf jedem Knoten eine bestimmte Rückruffunktion aus.
| Name | Typ | Beschreibung |
|---|---|---|
| callbackFunction | Funktion | Rückruffunktion, die für jeden Knoten in der Unterstruktur dieses Knotens ausgeführt werden soll. Diese Rückruffunktion verwendet einen Knoten als Parameter, der der zu besuchende Knoten ist. |
| Typ | Beschreibung |
|---|---|
| Keine |
Im folgenden Beispiel wird die incrementWithNode()- Methode der Ergebnis -API in einer Linter-Prüfung verwendet. Verwenden Sie diese Methode im Feld Skript des Formulars „Linter Check“.
(function(engine) {
engine.rootNode.visit(function(node) {
if (node.getTypeName() === "NAME" &&
node.getNameIdentifier() === "soughtFunction" &&
node.getParent().getTypeName() === "CALL") {
engine.finding.incrementWithNode(node);
}
});
})(engine);