es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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?

Tags:  ,

Answer

  1. Avatar for 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 utilizar exrefactor, primero instálalo como dependencia en tu archivo mix.exs:

    def deps do
      [
        # otras dependencias...
        {:exrefactor, "~> 0.2.0"}
      ]
    end
    

    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:

    $ mix xref search -c MyApp.MyModule.my_function
    

    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 como mix 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.

Comments are closed.