LinterCheckAstNode - com escopo, global

  • Versão de lançamento: Xanadu
  • Atualizado 1 de ago. de 2024
  • 2 min. de leitura
  • A API LinterCheckAstNode fornece métodos para obter detalhes do nó da árvore de sintaxe abstrata (AST) em verificações de linter.

    Esta API está incluída com o plug-in Instance Scan (com.glide.instance_scan) e é executada no namespace sn_instance_scan. Para obter mais informações, consulte Verificação de instância.

    Use os métodos nesta classe para executar verificações de linter em tipos de nó AST adicionando código ao campo Script no formulário Verificaçãode linter. Para obter mais informações, consulte Scripts de verificação avançada de linter.

    Crie uma verificação de linter para identificar problemas em um script. Quando uma verificação de linter é executada em um registro, uma árvore de sintaxe abstrata para seu código é gerada. Você pode usar a árvore de sintaxe abstrata para analisar problemas com o código.

    Métodos de acesso nesta API usando o objeto Instance Scan Engine.rootNode.

    LinterCheckAstNode – getNameIdentifier()

    Recupera o valor da cadeia de caracteres de um tipo de nó de nome. Um nó de nome representa um identificador simples que não é uma palavra-chave, como uma função ou nome de variável.

    Tabela 1. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 2. Retorna
    Tipo Descrição
    Cadeia de caracteres Se o objeto linter for um tipo de nó de nome, retorne o nome como uma cadeia de caracteres. Caso contrário, nulo.

    O exemplo a seguir usa o método incrementWithNode() da API de descobertas em uma verificação de linter. Use este método no campo Script do formulário Verificação de 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()

    Obtém o objeto do nó primário do nó acessado.

    Tabela 3. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 4. Retorna
    Tipo Descrição
    Objeto Objeto de nó primário do nó acessado.

    O exemplo a seguir usa o método incrementWithNode() da API de descobertas em uma verificação de linter. Use este método no campo Script do formulário Verificação de 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()

    Obtém o tipo do nó acessado.

    Tabela 5. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 6. Retorna
    Tipo Descrição
    Cadeia de caracteres Nome do tipo do nó acessado. Por exemplo, uma chamada de função na origem é tokenizada como um nó com o nome de tipo CALL.

    O exemplo a seguir usa o método incrementWithNode() da API de descobertas em uma verificação de linter. Use este método no campo Script do formulário Verificação de 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(função callbackFunction)

    Acessa cada nó na subárvore a partir deste nó e executa uma determinada função de retorno de chamada em cada nó.

    Tabela 7. Parâmetros
    Nome Tipo Descrição
    função de retorno de chamada Função Função de retorno de chamada a ser executada em cada nó na subárvore deste nó. Esta função de retorno de chamada usa um nó como um parâmetro que é o nó a ser visitado.
    Tabela 8. Retorna
    Tipo Descrição
    Nenhum

    O exemplo a seguir usa o método incrementWithNode() da API de descobertas em uma verificação de linter. Use este método no campo Script do formulário Verificação de Linter.

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