Mix Unused
Mix compiler tracer for detecting unused public functions.
Installation
def deps do
[
{:mix_unused, "~> 0.3.0"}
]
end
The docs can be found at https://hexdocs.pm/mix_unused.
Usage
After installation you need to add :unused
as a compiler to the list of Mix
compilers:
defmodule MySystem.MixProject do
use Mix.Project
def project do
[
compilers: [:unused] ++ Mix.compilers(),
# In case of Phoenix projects you need to add it to the list
# compilers: [:unused, :phoenix, :gettext] ++ Mix.compilers()
# ...
#
# If you want to only run it in the dev environment you could do
# it by using `compilers: compilers(Mix.env()) ++ Mix.compilers()`
# instead and then returning the right compilers per environment.
]
end
# ...
end
Then you just need to run mix compile
or mix compile --force
as usual
and unused hints will be added to the end of the output.
Warning
This isn't perfect solution and this will not find dynamic calls in form of:
apply(mod, func, args)
So this mean that, for example, if you have custom child_spec/1
definition
then mix unused
can return such function as unused even when you are using
that indirectly in your supervisor.
Configuration
You can define used functions by adding mfa
in unused: [ignored: [⋯]]
in your project configuration:
def project do
[
# ⋯
unused: [
ignore: [
{MyApp.Foo, :child_spec, 1}
]
],
# ⋯
]
end
Copyright and License
Copyright © 2021 by Łukasz Niemier
This work is free. You can redistribute it and/or modify it under the terms of the MIT License. See the LICENSE file for more details.