About
Yalo is a linting platform, written in OCaml. The philosophy of Yalo is to be as extensible and customizable as possible by users. To achieve this goal. Yalo makes an heavy use of plugins, so that users can define their own plugins to define new warnings, and even to define new languages to lint.
Main features of Yalo:
All warnings and linters are defined in plugins
Versioned interface for long term plugin support
Project based configuration file (.yaloconf)
Support for SARIF format for Github PR integration
Warnings are enabled per project, but can be disabled locally. Easy way to select warnings by plugin, tag or number
Linters are only called when the specific warnings they detect are enabled
Existing plugins:
yalo_plugin_ocaml: base support to lint OCaml programs. Allow users to define file linters, line linters, contents linters, parsetree linters (untyped, ppxlib) and typedtree linters (typed), applied on .ml, .mli, .cmi, .cmti and .cmt files.yalo_plugin_YALO: line, typed and untyped linters for OCaml, developed for Yalo itsef. Based onyalo_plugin_ocamlyalo_plugin_OCPINDENT: linter for OCaml that checks indentation with ocp-indent. Based onyalo_plugin_ocamlyalo_plugin_ZANUDA: linters implementing most warnings of Zanudayalo_plugin_CAMELOT: linters implementing most warnings of Camelot
Extensions:
ppx_yalo: this ppx can be used to call Yalo at compile time. Typed linters are not available, unless an untyped version is provided.