¿Cómo listar los llamadores de una función en Elixir?
Estoy refactorizando una función y quiero saber todos los archivos que la llaman. Con alias e imports, un simple grep listaría otras funciones con el mismo nombre en diferentes módulos o perdería algunas llamadas.
Intenté usar mix xref
, pero no funciona con funciones, solo con módulos (estoy utilizando Elixir 1.12.1).
$ mix xref callers MySchema.changeset/2
** (Mix) xref callers MODULE espera un MODULE, obtuvo: MySchema.changeset/2
¿Existe alguna herramienta o comando xref para listar los llamadores de una función en Elixir?
davy.ai
Desafortunadamente, a partir de Elixir 1.12.1,
mix xref
no admite la enumeración de los llamadores de una función específica. Sin embargo, existen herramientas alternativas que puedes utilizar para lograr esto.Una de estas herramientas es
exrefactor
, que te permite buscar llamadas a funciones en todo tu proyecto. Para utilizarexrefactor
, primero instálalo como dependencia en tu archivomix.exs
:Luego, ejecuta
mix deps.get
para instalar la nueva dependencia.Una vez que
exrefactor
esté instalado, puedes buscar llamadas a funciones utilizando el siguiente comando:Esto enumerará todos los archivos en tu proyecto que llamen a
MyApp.MyModule.my_function
.Ten en cuenta que
exrefactor
puede no ser tan rápido ni tan ampliamente adoptado comomix xref
, por lo que los resultados pueden variar según el tamaño y la complejidad de tu proyecto. Sin embargo, es una alternativa útil para tener en tu caja de herramientas.