Ktlint has an open API with which you can integrate.

The diagram below show the internal module structure of KtLint.


The Ktlint Rule Engine is by far the most important module. It is responsible for executing the linting and formatting of the source code. The Rule Engine itself does not contain any rules. Rules are provided by API Consumers.

The Ktlint CLI is an API Consumer of the Ktlint Rule Engine. Together with the Ktlint Ruleset Standard and the Ktlint Reporter modules the CLI offers a standalone tool which can easily be run from the commandline. Also, the Ktlint CLI can easily be used with custom rulesets and/or reporters.

The Ktlint Ruleset Core module contains the logic which is required by each API Consumer of the Ktlint Rule Engine, the Ktlint Ruleset Standard and custom rulesets.

The module Ktlint Test provide functionalities like assertThatRule which is used to write unit tests in a fluent AssertJ look-a-like style and can also be used for testing of custom rules.

The Ktlint logger module provides functionality for writing log messages.