日本語
Node.js 14.15.0 или более поздней версии.
npm install @yumemi-inc/statictrace
Вы можете установить statictrace либо для проекта, либо во всем мире.
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
Вы можете опустить опцию -p , создав файл .env с переменной TS_PROJECT_CONFIG .
TS_PROJECT_CONFIG=/absolute/path/to/tsconfig.json
Другие варианты
u, --use <printer> (необязательно): выберите один из типов принтеров по умолчанию ( text или mermaid ). statictrace начинает статический анализ вашего кода с точки, который явно намекает разработчик. Например, если вы хотите проанализировать поток регистрации, как ниже, вам нужно добавить подсказку JSDOC к функции, где начинается поток: @entrypoint YourFlowName .
/**
* @entrypoint Registration
*/
function startRegistration ( ) {
processRegistration ( ) ;
finishRegistration ( ) ;
untracedFunction ( ) ;
cleanupSomething ( ) ;
} Просто выполнение этого не дает вывода, но statictrace внутренне отслеживает все функции и вызовы методов, которые происходят в startRegistration() , и каждая функция вызовов в этих функциях, пока не появится вызовы. Другими словами, он строит статическую стектрас. Если есть какие -либо конкретные функции и методы, которые вы хотите проверить или документировать, например, чтобы узнать, называются ли некоторые функции, их порядок вызова и отношения между родителями/ребенком, вам необходимо отметить соответствующие функции с другим специальным комментарием: @trace .
/** @trace */
function processRegistration ( ) {
someRegistrationProcedure ( ) ;
} С этой statictrace создает следующий выход:
Entrypoint: Registration
startRegistration
processRegistration
someRegistrationProcedure
Вы можете использовать этот выход в качестве снимка Stacktrace и использовать его из выбранной библиотеки тестирования, чтобы гарантировать, что поток не изменяется после, например, рефакторинг. Вы также можете вывести Stacktrace в виде графиков mermaid для целей документации (см. Рисунок ниже).
$ statictrace
=======================
Entrypoint: SomeEntrypoint
begin
funcA
funcC
beingNestedEntrypoint
funcA
funcC
funcB
funcBstatictrace -u mermaid > graphs.mdВот как выглядят графики русалки:

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 Загрузите все файлы проекта и создайте график всех вызовов функций, помеченных @entrypoint или @trace . Вы должны передать тип принтера в качестве второго аргумента. Принтер - это интерфейс, который представляет все, что может печатать (отображать статический анализ, так или иначе). В настоящее время вы не можете предоставить свои собственные реализации, но можете выбрать одну из по умолчанию.