javascript / expert
Snippet
Programmatische V8-Codeabdeckungserfassung via node:inspector
Node.js stellt die internen V8-Profiler-Funktionen direkt über das integrierte Modul node:inspector bereit. Eigene Test-Frameworks können eine Inspector-Sitzung öffnen, um die präzise Codeabdeckung programmatisch zu aktivieren, Test-Suiten auszuführen und exakte Funktionsaufruf-Zahlen sowie Anweisungs-Abdeckungsbereiche ohne externe Transpiler zu extrahieren.
snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
const inspector = require('node:inspector');const session = new inspector.Session();session.connect();async function collectV8Coverage(testFn) {session.post('Profiler.enable');session.post('Profiler.startPreciseCoverage', { callCount: true, detailed: true });await testFn();return new Promise((resolve, reject) => {session.post('Profiler.takePreciseCoverage', (err, { result }) => {session.post('Profiler.stopPreciseCoverage');session.post('Profiler.disable');session.disconnect();if (err) return reject(err);resolve(result);});});}
nodejs
Erklärung
1
const session = new inspector.Session();
Erstellt eine neue Inspector-Sitzung, die mit dem aktuellen Node.js-Prozess verbunden ist.
2
session.post('Profiler.enable');
Aktiviert die V8-Profiler-Domäne zur Vorbereitung der Coverage-Instrumentierung.
3
session.post('Profiler.startPreciseCoverage', ...)
Startet die präzise Aufruf- und Byte-Offset-Abdeckungsmessung in der V8-Engine.
4
session.post('Profiler.takePreciseCoverage', ...)
Ruft den rohen V8-Abdeckungsbaum ab, der exakte abgedeckte Offsets und Aufrufzahlen enthält.