许久未更博客,“微有所感”,小更一篇。
最近使用 Elixir 有点多, 经常需要观察一些依赖 (Deps) 的实现, 比如想加个日志打印点 IO.inspect
啥的观察下某个变量,才能更好的理解某个 Elixir 的依赖。这里介绍下一些调试的方式:
这里以 yeshan333/ex_integration_coveralls 为例子.
我们先 clone 项目到本地:
1 | git clone [email protected]:yeshan333/ex_integration_coveralls.git |
比如, 我们想看一下代码扫描的依赖 credo
这个扫描规则 Credo.Check.Design.TagTODO
的实现大概是怎么样的.
1、mix deps.compile
找到它的实现 deps/credo/lib/credo/check/design/tag_todo.ex
, 我们想要观察下变量 issue_meta 实际是怎么样的, IO.inspect
一下.
1 | @doc false |
好了,接下来我们重编译一下 credo 模块即可:
1 | ❯ mix deps.compile credo # 重编译下 credo |
调用下 credo 即可观察到我们埋下的变量打印点信息:
1 | mix credo |
这样每次添加依赖观察点之后, 我们只需要 recompile 下依赖即可.
1 | 如果想废弃掉我们对依赖的修改,只需要重新拉去依赖即可 |
2、mix.exs 使用 :path 引用依赖
上面的方法经常需要手动重新编译指定的依赖, 这里还有个方式可以在我们使用任意 Mix Tasks 的时候,依赖都会自动重新编译, 我们只需要编译 mix.exs
将依赖指定为本地即可, 我们使用 path 指定依赖来源:
1 | {:credo, "~> 1.6", only: [:dev, :test], runtime: false, path: "deps/credo"}, |