The maddi user manual
maddi is a whole-program static analyzer that computes immutability, modification and independence for Java and Kotlin. This is the operator’s manual: how to run it on your own project, how to give it the right inputs, and how to read what it tells you.
For the concepts behind the annotations it produces, read the companion book, The Road to Immutability.
Read the manual → Download the PDF
What it covers
- Getting started — apply the plugin, configure the
maddiextension, runmaddi-analyzer. - The Gradle plugin — both tasks, every extension option, and how it behaves under the configuration cache.
- The Maven plugin — the five goals, and the
--add-exportsthe host JVM needs. - The command line — the self-contained distributions, and driving the analyzer from a captured compile log when you would rather not integrate with the build at all.
- Input configuration — what the analyzer needs to know about your sources and classpath, and the three ways it can be told.
- Analysis hints — supplying annotations for libraries whose sources you do not have.
- Error reporting and exit codes — what a non-zero exit means, and which of them are about your code rather than about the run.
- Kotlin — what the mixed front end does today, and what it does not.
Where the tool lives
The analyzer, the build plugins and the command-line distributions are on GitHub at CodeLaser/maddi.