1.2.1 • Published 4 years ago

@alu0100889772/addlogging v1.2.1

Weekly downloads
-
License
-
Repository
-
Last release
4 years ago

Práctica Espree Logging

Aprendizaje con la herramienta Inspect

Observando el código podemos aprender que a partir de el código inicial, lo primero que se hace es transformarlo en un AST.

npm.io

Este AST se va recorriendo hasta que encuentre un nodo con un 'type' FunctionDeclaration o FunctionExpression. Cuando lo ha encontrado es cuando añadimos nuestro propio nodo al AST con el Logging de que se ha entrado en esa función.

Esto se hace creado el código con el logging:

let beforeCode = `console.log('Entering ${name}(`)');`;

Y luego pasando el código por esprima.parse que lo transforma para poder inyectarlo al AST.

Añadir los parámetros de la función al Logging

Para poder añadir al Logging los parámetros de la función a la que se entra tenemos que observar el hijo de node que se llama params. Es un Array por lo que simplemente creamos un bucle que lo recorra y añadimos los nombres de los parámetros.

npm.io

Usando commander

El paquete commander nos facilita la interfaz de comandos de nuestro programa. Añade fácilmente las opciones -h y -V además de permitir que creemos opciones personalizadas.

Para esta práctica añadí las siguientes líneas de código:

const program = require('commander');
const {version, description} = require('./package.json');

program
  .version(version)
  .arguments('<inputFileName>')
  .description(description)
  .option('-o, --output <filename>', 'output code will go to the specified file');
  
program.parse(process.argv);

Gracias a esto ya funcionan las opciones -h y -V. La opción -o \ se podrá usar simplemente con program.output para obtener el nombre del archivo de salida.

npm.io

Documentación

Table of Contents
addLogging

This function starts the process to comment every function of the input code.

Parameters

Returns String commented code.

addBeforeCode

This function adds a comment after the program enters a function.

Parameters
  • node node where the comment will be injected.