#coverage #swc #transform #instrumentation #compatible #passes #istanbuljs

swc-coverage-instrument

Istanbul 兼容的 SWC 覆盖率分析访问者

23 个版本

0.0.24 2024 年 7 月 4 日
0.0.20 2023 年 8 月 2 日
0.0.19 2023 年 7 月 17 日
0.0.15 2023 年 3 月 24 日
0.0.8 2022 年 7 月 28 日

#78 in 性能分析

Download history 3/week @ 2024-04-13 6/week @ 2024-04-20 3/week @ 2024-04-27 7/week @ 2024-05-25 2/week @ 2024-06-01 340/week @ 2024-06-08 21/week @ 2024-06-15 5/week @ 2024-06-22 416/week @ 2024-06-29 48/week @ 2024-07-06 11/week @ 2024-07-13 21/week @ 2024-07-20 55/week @ 2024-07-27

每月 285 次下载

MIT 许可证

205KB
5K SLoC

SWC-coverage-instrument

swc-coverage-instrument 是一组软件包,用于支持 istanbuljs 兼容的覆盖率分析在 SWC 的转换过程中。可以通过 SWC 的基于 wasm 的插件或使用 rust 侧转换链中的自定义转换来执行分析转换。

兼容性具体意味着什么?

此分析将生成一个数据结构,模拟 istanbuljs 的 FileCoverage [对象] (https://github.com/istanbuljs/istanbuljs/blob/c7693d4608979ab73ebb310e0a1647e2c51f31b6/packages/istanbul-lib-coverage/lib/file-coverage.js#L97=),符合 istanbuljs 自身的测试套件。

然而,这并不意味着分析支持与覆盖率对象周围的相同 接口,也不支持完全相同的选项。不同编译器之间在运行时和 ast 访问者架构上的基本差异不允许完全相同的行为。此软件包将尽可能尝试 best attempt

注意:软件包可能在未进行主要 semver 增量的情况下具有破坏性更改

在稳定其接口的同时,此软件包不保证 semver 兼容的破坏性更改。如果遇到版本之间的意外破坏行为,请参阅变更日志。

用法

在 rust 中使用自定义转换过程

有一个接口暴露用于创建转换的访问者,您可以将它传递给 before_custom_pass

let visitor = swc_coverage_instrument::create_coverage_instrumentation_visitor(
    source_map: std::sync::Arc<SourceMapper>,
    comments: C,
    instrument_options: InstrumentOptions,
    filename: String,
);

let fold = as_folder(visitor);

InstrumentationOptions 是 istanbul 的分析选项的子集。请参考 istanbul 的选项 以获取相同的配置标志。但是,有一些例外或差异,参考 InstrumentOptions 将列出所有可能选项。

对于日志记录,此软件包不会自行初始化任何订阅者。调用者应根据需要设置适当的 tracing-subscriber

依赖项

~8–11MB
~232K SLoC