如何在 Elixir 中列出函数的调用者?
How to list callers of a function in Elixir?
我正在重构一个函数,我想知道调用它的每个文件。使用别名和导入,一个简单的 grep 将列出不同模块中具有相同名称的其他函数,或者会错过一些调用。
我尝试使用 mix xref
但它不适用于函数,只能用于模块(我使用的是 Elixir 1.12.1)。
$ mix xref callers MySchema.changeset/2
** (Mix) xref callers MODULE expects a MODULE, got: MySchema.changeset/2
是否有工具或外部参照命令来列出 Elixir 中函数的调用者?
有一个已弃用的 Mix.Tasks.Xref.calls/1
function, but it has been deprecated for a reason, Compilation tracers 更强大。
您可以为 {:remote_function, _, YourModule, :your_fun, your_arity}
设置跟踪器,然后从那里简单地 IO.puts/2
。
我正在重构一个函数,我想知道调用它的每个文件。使用别名和导入,一个简单的 grep 将列出不同模块中具有相同名称的其他函数,或者会错过一些调用。
我尝试使用 mix xref
但它不适用于函数,只能用于模块(我使用的是 Elixir 1.12.1)。
$ mix xref callers MySchema.changeset/2
** (Mix) xref callers MODULE expects a MODULE, got: MySchema.changeset/2
是否有工具或外部参照命令来列出 Elixir 中函数的调用者?
有一个已弃用的 Mix.Tasks.Xref.calls/1
function, but it has been deprecated for a reason, Compilation tracers 更强大。
您可以为 {:remote_function, _, YourModule, :your_fun, your_arity}
设置跟踪器,然后从那里简单地 IO.puts/2
。