日本語
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
TS_PROJECT_CONFIG 변수로 .env 파일을 만들어 -p 옵션을 생략 할 수 있습니다.
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
이 출력을 스택 트레이스의 스냅 샷으로 사용하여 선택한 테스트 라이브러리에서 사용하여 EG 리팩토링 후 흐름이 변경되지 않도록 보장 할 수 있습니다. 문서화 목적으로 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 태그로 표시된 모든 기능 호출의 그래프를 작성하십시오. 프린터 유형을 두 번째 인수로 전달해야합니다. 프린터는 인쇄 할 수있는 모든 것을 나타내는 인터페이스입니다 (정적 분석 결과를 어떤 식 으로든 표시). 현재 자신의 구현을 제공 할 수는 없지만 기본 구현 중 하나를 선택할 수 있습니다.