日本語
Node.js 14.15.0 o posterior.
npm install @yumemi-inc/statictrace
Puede instalar statictrace ya sea por proyecto o a nivel mundial.
pnpm install
pnpm run build
ts-node : pnpx ts-node src/lib.ts -p /absolute/path/to/tsconfig.json
statictrace -- -p /absolute/path/to/tsconfig.json
Puede omitir la opción -p creando un archivo .env con una variable TS_PROJECT_CONFIG .
TS_PROJECT_CONFIG=/absolute/path/to/tsconfig.json
Otras opciones
u, --use <printer> (opcional): elija uno de los tipos de impresoras predeterminados ( text o mermaid ). statictrace comienza el análisis estático de su código desde un punto que es explícitamente insinuado por un desarrollador. Por ejemplo, si desea analizar el flujo de registro como a continuación, debe agregar una pista de JSDOC a la función donde comienza el flujo: @entrypoint YourFlowName .
/**
* @entrypoint Registration
*/
function startRegistration ( ) {
processRegistration ( ) ;
finishRegistration ( ) ;
untracedFunction ( ) ;
cleanupSomething ( ) ;
} El solo hecho de hacer esto no produce salida, pero statictrace rastrea internamente todas las llamadas de función y método que ocurren dentro de startRegistration() y cada función llama dentro de esas funciones hasta que no hay llamadas. En otras palabras, construye una Stacktrace estática. Si hay funciones y métodos particulares que desea probar o documentar, por ejemplo, para saber si se llaman algunas funciones, su orden de llamadas y su relación padre/niño, debe marcar funciones relevantes con otro comentario especial: @trace .
/** @trace */
function processRegistration ( ) {
someRegistrationProcedure ( ) ;
} Con esta statictrace produce la siguiente salida:
Entrypoint: Registration
startRegistration
processRegistration
someRegistrationProcedure
Puede usar esta salida como una instantánea de una StackTrace y usarla desde su biblioteca de prueba elegida para garantizar que el flujo no cambie después de la refactorización de EG. También puede emitir el StackTrace como gráficos mermaid para fines de documentación (consulte la imagen a continuación).
$ statictrace
=======================
Entrypoint: SomeEntrypoint
begin
funcA
funcC
beingNestedEntrypoint
funcA
funcC
funcB
funcBstatictrace -u mermaid > graphs.mdAsí es como se ven los gráficos de sirena renderizado:

const { run } = require ( './build/lib' ) ;
const output = run ( '/absolute/path/to/tsconfig.json' , 'text' ) ;
// ...do something with output run(pathToTsConfig: string, printerType: "text" | "mermaid"): any Cargue todos los archivos de proyecto y cree un gráfico de todas las llamadas de función marcadas con etiquetas @entrypoint o @trace . Debe pasar un tipo de impresora como segundo argumento. Una impresora es una interfaz que representa cualquier cosa que pueda imprimir (muestra el resultado del análisis estático de una forma u otra). Actualmente no puede proporcionar sus propias implementaciones, pero puede elegir una de las predeterminadas.