Mix v1.11.0-dev mix xref View Source
Prints cross reference information between modules.
This task is automatically reenabled, so you can print information multiple times in the same Mix invocation.
xref task expects a mode as first argument:
mix xref MODE
All available modes are discussed below.
Prints all callers of the given
mix xref callers MyMod
Show general stats about file and their dependencies in a project.
mix xref stats
The stats mode is often used alongside
mix xref graph, especially
to provide insight into large graphs. Therefore stats accepts the
--sink options as
the graph mode listed below. For example, to limit the stats only
to certain labels:
mix xref stats --label compile
Prints a file dependency graph where an edge from
A (source) depends on
mix xref graph
The following options are accepted:
--exclude- paths to exclude
--label- only shows relationships with the given label The labels are "compile", "struct" and "runtime"
--source- displays all files that the given source file references (directly or indirectly)
--sink- displays all files that reference the given file (directly or indirectly)
--format- can be set to one of:
pretty- prints the graph to the terminal using Unicode characters. Each prints each file followed by the files it depends on. This is the default except on Windows;
plain- the same as pretty except ASCII characters are used instead of Unicode characters. This is the default on Windows;
dot- produces a DOT graph description in
xref_graph.dotin the current directory. Warning: this will override any previously generated file
--sink options are particularly useful when
trying to understand how the modules in a particular file interact
with the whole system. You can combine those options with
--only-nodes to get all files that exhibit a certain property,
# To get all files that depend on lib/foo.ex mix xref graph --sink lib/foo.ex --only-nodes # To get all files that depend on lib/foo.ex at compile time mix xref graph --label compile --sink lib/foo.ex --only-nodes
Those options are shared across all modes:
--include-siblings- includes dependencies that have
:in_umbrellaset to true in the current project in the reports. This can be used to find callers or to analyze graphs between projects
--no-compile- does not compile even if files require compilation
--no-deps-check- does not check dependencies
--no-archives-check- does not check archives
--no-elixir-version-check- does not check the Elixir version from mix.exs
Link to this section Summary
Link to this section Functions
Returns a list of information of all the runtime function calls in the project.
Each item in the list is a map with the following keys:
:callee- a tuple containing the module, function, and arity of the call
:line- an integer representing the line where the function is called
:file- a binary representing the file where the function is called
:caller_module- the module where the function is called
This function returns an empty list when used at the root of an umbrella project because there is no compile manifest to extract the function call information from. To get the function calls of each child in an umbrella, execute the function at the root of each individual application.