日本語
Node.js 14.15.0 oder höher.
npm install @yumemi-inc/statictrace
Sie können statictrace entweder pro projekt oder global installieren.
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
Sie können die Option -p weglassen, indem Sie eine .env -Datei mit einer Variablen TS_PROJECT_CONFIG erstellen.
TS_PROJECT_CONFIG=/absolute/path/to/tsconfig.json
Andere Optionen
u, --use <printer> (optional): Wählen Sie einen der Standarddruckertypen ( text oder mermaid ). statictrace beginnt mit einer statischen Analyse Ihres Codes von einem Punkt, der von einem Entwickler ausdrücklich angedeutet wird. Wenn Sie beispielsweise den Registrierungsfluss wie unten analysieren möchten, müssen Sie der Funktion, in der der Fluss beginnt, einen JSDOC -Hinweis hinzufügen: @entrypoint YourFlowName .
/**
* @entrypoint Registration
*/
function startRegistration ( ) {
processRegistration ( ) ;
finishRegistration ( ) ;
untracedFunction ( ) ;
cleanupSomething ( ) ;
} Wenn Sie dies nur tun, erzeugt dies keine Ausgabe, sondern statictrace verfolgt intern alle Funktions- und Methodenaufrufe, die in startRegistration() und jede Funktion in diesen Funktionen auftreten, bis keine Anrufe vorliegen. Mit anderen Worten, es baut eine statische Stacktrace auf. Wenn es bestimmte Funktionen und Methoden gibt, die Sie testen oder dokumentieren möchten, z @trace
/** @trace */
function processRegistration ( ) {
someRegistrationProcedure ( ) ;
} Mit dieser statictrace erzeugt die folgende Ausgabe:
Entrypoint: Registration
startRegistration
processRegistration
someRegistrationProcedure
Sie können diese Ausgabe als Schnappschuss eines Stacktrace verwenden und diese aus Ihrer Testbibliothek der Wahl verwenden, um sicherzustellen, dass sich der Fluss nach dem z. B. Refactoring nicht ändert. Sie können die Stacktrace auch als mermaid -Diagramme für Dokumentationszwecke ausgeben (siehe Bild unten).
$ statictrace
=======================
Entrypoint: SomeEntrypoint
begin
funcA
funcC
beingNestedEntrypoint
funcA
funcC
funcB
funcBstatictrace -u mermaid > graphs.mdSo sehen gerenderte Meerjungfrau -Diagramme aus:

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 Laden Sie alle Projektdateien und erstellen Sie ein Diagramm aller Funktionsaufrufe, die mit @entrypoint oder @trace -Tags gekennzeichnet sind. Sie sollten einen Druckertyp als zweites Argument übergeben. Ein Drucker ist eine Schnittstelle, die alles darstellt, was drucken kann (die statische Analyse auf die eine oder andere Weise anzeigen). Derzeit können Sie Ihre eigenen Implementierungen nicht bereitstellen, aber eine der Standardeinstellungen auswählen.