LinterCheckAstNode - Inclus, Global
L’API LinterCheckAstNode fournit des méthodes pour obtenir les détails des nœuds de l’arborescence syntaxique 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 dans le formulaire Linter Check. Pour plus d’informations, reportez-vous à la section Scripts de vérification Linter avancés.
Créez une vérification 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 liés au 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’une fonction ou un nom de variable.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Chaîne | Si l’objet linter est un type de nœud nom, renvoyez le nom sous forme de chaîne. Null 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 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()
Obtient l’objet du nœud parent du nœud consulté.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Objet | Objet du 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 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()
Obtient le type du nœud auquel vous avez accédé.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Chaîne | Tapez le nom du nœud auquel vous avez accès. 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 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(Function 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 |
|---|---|---|
| callbackFunction | Fonction | Fonction de rappel à exécuter sur chaque nœud de la sous-arborescence de ce nœud. Cette fonction de rappel prend un noeud comme paramètre qui est le noeud à 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 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);