LinterCheckAstNode : dans le champ d’application, global
L’API LinterCheckAstNode fournit des méthodes pour obtenir des détails de nœud de l’arborescence de syntaxe abstraite (AST) dans les vérifications Linter.
Cette API est incluse dans le module d’extension Instance Scan (com.glide.instance_scan) et s’exécute dans l’espace de noms sn_instance_scan . Pour plus d’informations, consultez Analyse d’instance.
Utilisez les méthodes de cette classe pour exécuter des vérifications Linter sur les types de nœuds AST en ajoutant du code au champ Script du formulaire de vérification Linter. Pour plus d’informations, consultez Scripts de vérification de linter avancés.
Créez une vérification de linter pour identifier tous les problèmes dans un script. Lorsqu’une vérification linter est exécutée sur un enregistrement, une arborescence de syntaxe abstraite pour son code est générée. Vous pouvez utiliser l’arborescence de syntaxe abstraite pour analyser les problèmes avec le code.
Accédez aux méthodes de cette API à l’aide de l’objet Instance Scan engine.rootNode .
LinterCheckAstNode : getNameIdentifier()
Récupère la valeur de chaîne d’un type de nœud de nom. Un nœud de nom représente un identificateur simple qui n’est pas un mot clé, tel qu’un nom de fonction ou de variable.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Chaîne | Si l’objet linter est un type de nœud name, renvoyez le nom sous forme de chaîne. Nul dans le cas contraire. |
L’exemple suivant utilise la méthode incrementWithNode() de l’API Findings dans une vérification linter. Utilisez cette méthode dans le champ Script du formulaire de vérification Linter.
(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()
Obtient l’objet de nœud parent du nœud consulté.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Objet | Objet de nœud parent du nœud consulté. |
L’exemple suivant utilise la méthode incrementWithNode() de l’API Findings dans une vérification linter. Utilisez cette méthode dans le champ Script du formulaire de vérification Linter.
(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()
Obtient le type de nœud ayant fait l’objet d’un accès.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Chaîne | Nom du type du nœud auquel vous avez accédé. Par exemple, un appel de fonction dans la source est tokenisé en tant que nœud avec le nom de type CALL. |
L’exemple suivant utilise la méthode incrementWithNode() de l’API Findings dans une vérification linter. Utilisez cette méthode dans le champ Script du formulaire de vérification Linter.
(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(Fonction callbackFunction)
Accède à chaque nœud de la sous-arborescence à partir de ce nœud et exécute une fonction de rappel donnée sur chaque nœud.
| Nom | Type | Description |
|---|---|---|
| Fonction de rappel | Fonction | Fonction de rappel à exécuter sur chaque nœud de la sous-arborescence de ce nœud. Cette fonction de rappel prend un nœud comme paramètre qui est le nœud à visiter. |
| Type | Description |
|---|---|
| Aucun |
L’exemple suivant utilise la méthode incrementWithNode() de l’API Findings dans une vérification linter. Utilisez cette méthode dans le champ Script du formulaire de vérification Linter.
(function(engine) {
engine.rootNode.visit(function(node) {
if (node.getTypeName() === "NAME" &&
node.getNameIdentifier() === "soughtFunction" &&
node.getParent().getTypeName() === "CALL") {
engine.finding.incrementWithNode(node);
}
});
})(engine);