importGraph
A simple tool to create import graphs of lake packages.
Requirements
For creating different output formats than .dot
(for example to create a .pdf
file), you should have graphviz
installed.
Usage
If you are using mathlib, the tool will already be available. If not, see installation notes below.
Once available in your project, you can create import graphs with
lake exe graph
A typical command is
lake exe graph --to MyModule my_graph.pdf
where MyModule
follows the same module naming you would use to import
it in lean. See lake exe graph --help
for more options.
You can specify multiple sources and targets e.g. as
lake exe graph --from MyModule1,MyModule2 --to MyModule3,MyModule4 my_graph.pdf
Troubleshoot
- make sure to
lake build
your project (or the specified--to
module) before usinglake exe graph
!
Json
To create a Json file, you can use .xdot_json
as output type:
lake exe graph my_graph.xdot_json
HTML
lake exe graph my_graph.html
creates a stand-alone HTML file visualising the import structure.
Commands
There are a few commands implemented, which help you analysing the imports of a file. These are accessible by adding import ImportGraph.Imports
to your lean file.
#redundant_imports
: lists any transitively redundant imports in the current module.#min_imports
: attempts to construct a minimal set of imports for the declarations in the current file. (Must be run at the end of the file. Tactics and macros may result in incorrect output.)#find_home decl
: suggests files higher up the import hierarchy to whichdecl
could be moved.
Other executables
lake exe unused_transitive_imports m1 m2 ...
For each specified module m
, prints those n
from the argument list which are imported, but transitively unused by m
.
Installation
The installation works exactly like for any Lake package, see Lake docs.
This only relevant if your project does not already require importGraph
through another lake package (e.g. mathlib). If it does, do not follow these instructions; instead just use the tool with lake exe graph
!
You can import this in any lean projects by the following line to your lakefile.lean
:
require "leanprover-community" / "importGraph" @ git "main"
or, if you have a lakefile.toml
, it would be
[[require]]
name = "importGraph"
source = "leanprover-community"
rev = "main"
Then, you might need to call lake update -R importGraph
in your project.
Contribution
Please open PRs/Issues if you have troubles or would like to contribute new features!
Credits
The main tool has been extracted from mathlib, originally written by Kim Morrison and other mathlib contributors.
The HTML visualisation has been incorporated from a project by Eric Wieser.
Maintainers
Primarily maintained by Jon Eugster, Kim Morrison, and the wider leanprover community.