package dunolint-lib

  1. Overview
  2. Docs
A library to create dunolint configs

Install

Dune Dependency

Authors

Maintainers

Sources

dunolint-0.0.20250310.tbz
sha256=b44119c96aeabb960e852711c2f20ae43f0011e796f05e012141ba980a5b58f6
sha512=5bf76732adc940db6cac0875e94c3eaff436288faba95388b9675c68b3f30f5362e01f289fc8a096325f7db812ace273773a1e051ab7d7ace3b8db4a57a0e070

Description

[dunolint] is a set of OCaml libraries and a cli tool to lint and help manage files in (large) dune projects.

[dunolint-lib] is the package you need as a user to define a dunolint config, without pulling all the dependencies required by the linter engine and command line.

It defines a configuration language in which you can express linting invariants for your projects. The tool will enforce these invariants, applying global and systematic changes automatically when able, and help with general ergonomics questions.

For example: "I want for all libs in this subdirectory to enable bisect_ppx, please go patch my dune files". Or, "I would like all libraries that verify this particular predicate to supply the ppx flag -unused-code-warnings=force", and more.

You can setup [dunolint] as part of your CI checks to help enforcing properties and linting checks going forward.

Tags

dune linter

Published: 13 Mar 2025

README

dunolint

CI Status" Coverage Status" Deploy Doc Status"

Introduction

Welcome to dunolint, a project composed of libraries and a CLI designed to assist with maintaining build files typically found in OCaml repos managed by the Dune build system (e.g., files named dune, dune-project, etc.).

Project Goals

The goal of dunolint is to check customizable invariants in your repo and help with ergonomic issues, such as applying systematic changes across many files. It supports things like enabling instrumentation, configuring recurring lint or preprocess flags, sorting libraries alphabetically, and more. You can use it at your convenience during development, and enforce consistency by integrating it into your CI pipeline.

Documentation

Published here.

Current State

It's currently in the early stages of development and there's little code and features at this point. I'm seeking feedback and early discussions about the project next steps.

Get Involved

I would love to hear your thoughts about dunolint. If you're interested in this project and would like to engage in discussions or provide feedback, please feel free to open an issue or start a discussion in the GitHub space of the project.

Thank you for your interest in dunolint!

Acknowledgements

We're very thankful to:

  • Jérémie Dimino and the Dune developers for their work on the Dune build system for OCaml.
  • The diataxis approach to technical documentation, which we use as inspiration to structure our doc.

Dependencies (15)

  1. sexplib0 >= "v0.17"
  2. re >= "1.8.0"
  3. ppxlib >= "0.35.0"
  4. ppx_sexp_value >= "v0.17"
  5. ppx_sexp_conv >= "v0.17"
  6. ppx_let >= "v0.17"
  7. ppx_here >= "v0.17"
  8. ppx_hash >= "v0.17"
  9. ppx_enumerate >= "v0.17"
  10. ppx_compare >= "v0.17"
  11. fpath-base >= "0.2.2"
  12. dune-glob >= "3.17"
  13. base >= "v0.17"
  14. ocaml >= "5.3"
  15. dune >= "3.17"

Dev Dependencies (1)

  1. odoc with-doc

Used by (1)

  1. dunolint

Conflicts

None

OCaml

Innovation. Community. Security.