LinterCheckAstNode – Scoped, 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 Instanz-Scan.
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 Erweiterte Linter-Prüfskripts.
Erstellen Sie eine Linter-Prü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 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 Stichwort ist, z. B. eine Funktion oder ein 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 Findings- API in einer Linter-Prüfung verwendet. Verwenden Sie diese Methode im Feld Skript des Linter-Prüfungsformulars.
(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 Knotens ab, auf den zugegriffen wird.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Objekt | Übergeordnetes Knotenobjekt des Knotens, auf den zugegriffen wird. |
Im folgenden Beispiel wird die incrementWithNode()- Methode der Findings- API in einer Linter-Prüfung verwendet. Verwenden Sie diese Methode im Feld Skript des Linter-Prüfungsformulars.
(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 Knotens ab, auf den zugegriffen wird.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Zeichenfolge | Typname des Knotens, auf den zugegriffen wird. Beispielsweise wird ein Funktionsaufruf in der Quelle als Knoten mit dem Typnamen CALLtokenisiert. |
Im folgenden Beispiel wird die incrementWithNode()- Methode der Findings- API in einer Linter-Prüfung verwendet. Verwenden Sie diese Methode im Feld Skript des Linter-Prüfungsformulars.
(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(Function callbackFunction)
Greift ab diesem Knoten auf jeden Knoten in der Unterstruktur zu und führt eine bestimmte Rückruffunktion für jeden Knoten 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, bei dem es sich um den zu besuchenden Knoten handelt. |
| Typ | Beschreibung |
|---|---|
| Keine |
Im folgenden Beispiel wird die incrementWithNode()- Methode der Findings- API in einer Linter-Prüfung verwendet. Verwenden Sie diese Methode im Feld Skript des Linter-Prüfungsformulars.
(function(engine) {
engine.rootNode.visit(function(node) {
if (node.getTypeName() === "NAME" &&
node.getNameIdentifier() === "soughtFunction" &&
node.getParent().getTypeName() === "CALL") {
engine.finding.incrementWithNode(node);
}
});
})(engine);