Kakadu / zanuda

OCaml linter
GNU Lesser General Public License v3.0
67 stars 9 forks source link
diff linter ocaml

Build Master License Lints docs API docs Coverage Status

A linter for OCaml+dune projects

A linter is a tool that discovers bugs and obscurities in the code. The name was invented in 1978 paper of S. C. Johnson: Lint, a C Program Checker.

This is a list of currently supported analyses.

From techinical point of view, most of the lints study Typedtree, so the input for linter should be a fully compiled dune project. There is a support of linters that study untyped tree, but I don't expect them to be widely used. These two abstract trees don't allow to find all possible code quirks. Currently, we delegate job of detecting something like f(1)(2)(3) to ocamlformat.

This linter is inspired by:

But I'm aware that there are other linters like Camelot for OCaml and Clippy Rust.

Usage

Examples of 'zanuda' usage could be found in the 'tests' directory. But in short:

Developping

To get dependecies you could use standard dune/opam machinery:

opam pin add ./ -n
opam install . --deps-only --with-test --with-doc

Running a single test:

dune b @tests/typed/License

Running all tests:

dune test
See also