Iris
View SourceA tool for visualizing your Elixir codebase.
Iris aims to reduce the time taken to skim through an Elixir codebase by rendering an interactive GUI displaying the constituent applications, modules, methods and method call paths, even documentation!
The following features are implemented.
- List all Applications in elixir lib
- List all Modules in an application
- List all methods in an application
- Generate & View inbound and outbound calls from a selected method
- Click on outbound call method to expand the method and view its outbound calls
- Show Method documentation
- Show Module documentation
- Detect and denote recursive methods with a recursion icon
- Detect and denote methods that have documentation with a docs icon
Installation
The package can be installed by adding iris
to your list of dependencies in mix.exs
:
def deps do
[
{:iris, "~> 0.1.2"}
]
end
Hex package located at https://hexdocs.pm/iris.
Usage
Execute the following command after ensuring iris
is added to your dependency list.
mix iris
For more info use the verbose flag as such:
mix iris -v
mix iris --verbose
To link the generated iris GUI in documentation generated by ex_doc
- Add an empty
IrisUI.md
in the root directory of the project - Add
IrisUI.md
to the extras section ofdocs
inmix.exs
. See example - Execute
mix iris.docs
- You will find a link to IrisUI in the Pages section to
irisui.html
Interactive Demo
HexDocs hosts the Iris GUI for this project! generated by mix iris.docs
Find the interactive UI at HexDocs -- https://hexdocs.pm/iris/irisui.html
Known Limitations
- Functions passed as parameters and invoked using the dot notation are not fully supported
- Lambdas are not fully supported
- All external method calls are not rendered by default, however there should be a toggle for this in the next version of this library
Contribution
If you encounter any issue, raise a github issue with a minimal example that reproduces the issue.
This project implementation can be improved a lot, pull requests that improve the codebase/address any issues are welcome.
License
Iris source code is released under the Apache 2 License.
Any content of Iris, or any content generated by any "Derivative Works" (as specified in the Apache 2 License), must include a direct, and visible link to the Iris repository on each rendered material.
This project is heavily inspired by ExDoc and uses some of its source code in generating and viewing documentation. Documentation views contain direct, readable and visible links to the ExDoc repository as specified by the license. The icon used to denote recursive methods is from Grommet.