---
sourceDocument: Yokohama Now Plattformverwaltung
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/de-DE/yokohama/platform-administration

 Release :

    - yokohama

ft:locale :

    - de-DE

ft:publication_title :

    - Yokohama Now Plattformverwaltung

ft:clusterId :

    - platadm

bundleId :

    - platadm

workflow :

    - Platform


---

# Skripts für erweiterte Linter-Prüfung

# Skripts für erweiterte Linter-Prüfung {#ariaid-title1}

* Freigeben Version: Yokohama
* 
* Aktualisiert 30. Januar 2025
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 3 Minuten Lesedauer

Linter-Prüfungsskripts helfen Ihnen beim Schreiben von Prüfungen, die nach Problemen in Skripts suchen. Wenn eine Linter-Prüfung für einen Datensatz ausgeführt wird, wird eine abstrakte Syntaxstruktur für den Code bereitgestellt. Sie können diese abstrakte Syntaxstruktur verwenden, um Probleme mit dem Code zu analysieren, z. B. zu viele geschachtelte IF-Anweisungen oder Nutzungen langsamer API in einer while-Schleife.

## Linter-Überprüfungsnutzung {#hs-linter-check-scripts__section_zcb_151_dpb}

Linter-Prüfungen haben ein eindeutiges Objekt, das verwendet werden soll `Rootknoten `. Dies ist der Stammknoten der analysierten abstrakten Syntaxstruktur (AST) für das Skript des aktuellen Datensatzes. Dieses Objekt hat viele Funktionen, aber die `Besuchen `Funktion ist am wichtigsten. Die `Besuchen `Die Funktion verwendet eine Rückruffunktion als Parameter, der auf jedem Knoten der Struktur aufgerufen wird. Die Rückruffunktion verwendet dann einen Knoten als Parameter, der den aktuellen Knoten während der Iteration darstellt. Sie können „falsch" von der Rückruffunktion zurückgeben, um die Iteration der Struktur frühzeitig zu beenden, andernfalls wird jeder Unterknoten in der Struktur des von Ihnen angerufenen Knotens besucht `Besuchen `Ein.  
Beispiel: Wenn Sie nach einer veralteten API suchen möchten, die aufgerufen wird `BadFunction() `. Sie können im folgenden Beispiel eine Linter-Prüfung mit einem Skript schreiben:

    (function(engine) {
    	engine.rootNode.visit(function(node) {
    		if (node.getTypeName() === "NAME" &&
    				node.getNameIdentifier() === "badFunction" &&
    				node.getParent().getTypeName() === "CALL") {
    			engine.finding.incrementWithNode(node);
    		}
    	});
    })(engine);

Wenn Sie einen Scan mit dieser Linterprüfung ausführen, wird jeder Datensatz im Scan mit einem Skriptfeld überprüft. Wenn beispielsweise ein Datensatz in diesem Scan ein Skript enthält, das wie folgt aussieht, greift der Scan ein Ergebnis für diesen Datensatz auf.

    /*
    badFunction()
    */
    // badFunction()
    function badFunction() {
    	return;
    }
    var GoodClass = Class.create();
    GoodClass.prototype = Object.extendsObject(Object, {
    	badFunction: function() {
    		// actually good
    	}
    });
    var badFunction = ["badFunction", "badFunction()"];
    badFunctionButSometimesGood();

    badFunction();

## Knotenfunktionen {#hs-linter-check-scripts__section_q4q_zv1_dpb}

Im Folgenden finden Sie eine Liste der verfügbaren Funktionen, die für das Knotenobjekt aufgerufen werden können.

* `GetRootNode() `: Ruft den Stammknoten der Struktur für diesen Knoten ab
* `GetParent() `: Ruft das übergeordnete Element dieses Knotens ab
* `GetLineNo() `: Ruft den Standort der Leitungsnummer für diesen Knoten ab
* `GetColumnNo() `: Ruft die Position der Spaltennummer für diesen Knoten ab
* `Zu Quelle() `: Ruft die Quelle für diesen Knoten ab. Die Quelle basiert auf diesem Knoten und seinen untergeordneten Elementen
* `GetTypeName() `: Ruft den Knotentypnamen dieses Knotens ab. Beispiel: Ein Funktionsaufruf in der Quelle wird als Knoten mit dem Typnamen „ANRUF" tokenisiert.  
  Hinweis:  
  Die Werte von `Node.getTypeName() `Stammen aus verschiedenen Knotentypen in einer abstrakten Syntaxstruktur (AST). Die möglichen Werte stammen aus dem AST-Parser von Rhino selbst.
* `GetNameIdentifier() `: Wenn der Knotentyp dieses Knotens „NAME" ist, geben Sie den Bezeichner zurück, der der Zeichenfolgenwert des Namens selbst ist. Ein „NAME"-Knoten stellt einen einfachen Namen dar, der kein Stichwort ist, z. B. ein Funktionsname oder ein Variablenname.  
  Hinweis:  
  Wenn dieser Knoten kein NAMENKNOTEN ist, ist das Ergebnis null.
* `GetAbsolutePosition() `: Ruft die absolute Position dieses Knotens ab. Die absolute Position ist die Anzahl der Zeichen vom Beginn des Skripts bis zu diesem Knoten
* `CompareTo(Sonstiges) `: Vergleichen Sie diesen Knoten mit einem anderen Knoten. Der Knoten mit einer größeren absoluten Position und Länge ist im Vergleich größer. `Sonstiges `Ist ein Knoten, der mit diesem Knoten verglichen werden soll
* `Besuch (callbackFunction) `: Besuchen Sie jeden Knoten in der Unterstruktur ab diesem Knoten, und führen Sie die angegebene Rückruffunktion auf jedem Knoten aus. `CallbackFunction `Ist eine Funktion, die auf jedem Knoten in der Unterstruktur dieses Knotens ausgeführt wird. Diese Rückruffunktion verwendet einen LinterCheckAstNode als Parameter, der der aufgerufene Knoten ist
* `DebugPrint() `: Gibt eine Zeichenfolgendarstellung der abstrakten Syntaxstruktur zurück, ausgehend von diesem Knoten. Jede Zeile enthält Informationen zu einem Knoten, und der Einzug stellt die Hierarchiebeziehung zwischen den Knoten dar. Die Informationen in jeder Zeile sind wie folgt angeordnet
  1. Absolute Position
  2. Knotentypname
  3. Position relativ zum übergeordneten Element
  4. Länge
  5. Namensbezeichner (wenn ein NAMENSKNOTEN)
  {#hs-linter-check-scripts__ol_hlh_q1b_dpb}

{#hs-linter-check-scripts__ul_vkj_bw1_dpb}Weitere Informationen finden Sie unter [LinterCheckAstNode-API: Bereichsbezogen, global](https://www.servicenow.com/docs/access?context=LinterCheckAstNodeAPIBoth&version=yokohama&pubname=yokohama-api-reference&ft:locale=en-US).

