ElixirLS测试覆盖率实战:行、函数、分支三层覆盖一目了然

📅 2026/8/22 13:06:04
ElixirLS测试覆盖率实战:行、函数、分支三层覆盖一目了然
ElixirLS测试覆盖率实战行、函数、分支三层覆盖一目了然【免费下载链接】vscode-elixir-lsElixir language support and debugger for VS Code, powered by ElixirLS.项目地址: https://gitcode.com/gh_mirrors/vsc/vscode-elixir-ls在 VS Code 中使用 ElixirLS 扩展运行 Elixir 测试并查看测试覆盖率变得非常简单内置的Run with Coverage测试配置可以一键收集行、函数、分支三层覆盖数据并直接在编辑器原生的覆盖率视图中呈现无需再切换到命令行查看文本报告。为什么需要 ElixirLS 测试覆盖率Mix/ExUnit 自带的mix cover只能给出行级覆盖的文本报告很难直观看到哪些函数、哪些子句分支根本没被测试到。从 v0.31.0 版本开始ElixirLS 为 VS Code 的 Test Explorer 增加了专门的覆盖率测试配置✅行覆盖Statement Coverage逐行统计命中次数未执行的行在编辑器中直接高亮✅函数覆盖Declaration Coverage统计每个函数定义被调用的总次数✅分支覆盖Branch Coverage对多子句函数的每个子句单独计数并标注签名其中分支级覆盖是最大亮点——Mix 和 ExUnit 自身的覆盖率输出都不提供这一层数据只有 ElixirLS 帮你补齐。如何一键运行 ElixirLS 覆盖率测试只需三步在 VS Code 扩展市场安装ElixirLS扩展它同时负责代码补全、调试与测试运行打开任意包含mix.exs和test/目录的 Elixir 项目ElixirLS 会自动发现全部*_test.exs文件在Testing视图活动栏烧瓶图标中形成测试树选中单个测试、测试文件或整个测试套件在运行方式下拉菜单中选择Run with Coverage。运行结束后即可在原生覆盖率视图中查看三层结果编辑器行号槽也会同步显示覆盖色条。 也可以开启elixirLS.enableTestLenses设置让每个测试上方直接显示 Run test 快捷入口无需离开编辑器就能触发测试三层覆盖率分别看什么行覆盖是最基础的一层每条可执行语句都记录命中次数0 次命中的行就是最直接的补测目标。函数覆盖以函数定义为粒度一个函数哪怕内部某行被间接执行过只要整个函数从未被调用就会被标记出来帮你快速找出死代码或遗漏的入口。分支覆盖粒度最细对于多子句函数例如按参数模式匹配的多重定义每个子句单独计数并携带子句签名标签让你发现函数覆盖了、但只走了一半分支的隐患。这三层数据在扩展客户端中的结构定义于 coverage.ts每个文件的覆盖信息包含行命中、函数命中与子句命中三组数据最终汇总成 VS Code 原生的FileCoverage对象呈现。覆盖率数据是怎么生成的整个流程对用户完全透明背后的机制并不复杂扩展在mix test命令上追加--cover参数并启用 ElixirLS 内置的 ExUnit 格式化器由它解析:cover插桩数据通过 DAP 协议以test_coverage事件实时流回客户端见 runTest.ts同一次运行中如果跨多个mix test会话客户端会把覆盖率数据按行、按函数、按子句累加合并分批执行的测试结果不会丢失覆盖率配置向 VS Code 注册了loadDetailedCoverage懒加载回调见 testController.ts只有当你真正查看某个文件时才读取其明细大型项目也不会卡顿。常见问题与使用技巧为什么覆盖率运行时不能打断点覆盖率插桩与调试器插桩互不兼容因此 ElixirLS 在覆盖率运行中不开启调试解释模式需要排查逻辑时请改用普通 Run / Debug 配置。结果在哪里看Testing 视图中有独立的覆盖率摘要展开文件后可看到行/函数/分支明细编辑器内的行号槽则提供逐行覆盖色条。需要哪个版本Run with Coverage 功能自 v0.31.0 起提供请升级 ElixirLS 至最新版本后使用更新详情可参考 CHANGELOG.md。【免费下载链接】vscode-elixir-lsElixir language support and debugger for VS Code, powered by ElixirLS.项目地址: https://gitcode.com/gh_mirrors/vsc/vscode-elixir-ls创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考