1. ホーム
  2. debugging

[解決済み] Elixirで関数の呼び出し元をリストアップする方法は?

2022-03-06 09:01:54

質問

ある関数をリファクタリングしているのですが、その関数を呼び出しているファイルをすべて知りたいのです。エイリアスやインポートがあると、単純な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で関数の呼び出し元をリストアップするツールやxrefコマンドはありますか?

どのように解決するのですか?

非推奨の Mix.Tasks.Xref.calls/1 関数がありますが、これは理由があって非推奨となりました。 コンパイルトレーサー の方がはるかに強力です。

に対してトレーサを設定することができます。 {:remote_function, _, YourModule, :your_fun, your_arity} で、単に IO.puts/2 を、そこから