Auto QUality Assurance for Julia packages
236 Stars
Updated Last
11 Months Ago
Started In
May 2019

Aqua.jl: Auto QUality Assurance for Julia packages

Stable Dev GitHub Actions Codecov GitHub commits since tagged version Aqua QA

Aqua.jl provides functions to run a few automatable checks for Julia packages:

  • There are no method ambiguities.
  • There are no undefined exports.
  • There are no unbound type parameters.
  • There are no stale dependencies listed in Project.toml.
  • Check that test target of the root project Project.toml and test project (test/Project.toml) are consistent.
  • Check that all external packages listed in deps have corresponding compat entry.
  • Project.toml formatting is compatible with Pkg.jl output.
  • There are no "obvious" type piracies (new in 0.6)

See more in the documentation.

Quick usage

Call Aqua.test_all(YourPackage) from test/runtests.jl, e.g.,

using YourPackage
using Aqua

Notes on Aqua 0.6

Aqua 0.6 includes the type piracy detection, thanks to the PR by Jakob Nybo Nissen (@jakobnissen) and the original implementation by Frames Catherine White (@oxinabox).

If this part of Aqua 0.6 causes a trouble, there are two ways to solve the issue:

  1. Keep using Aqua 0.5. It is still maintained.
  2. Disable the piracy detection by the flag as in Aqua.test_all(YourPackage; piracy = false).

Specifying Aqua version

To avoid breaking test when a new Aqua.jl version is released, it is recommended to add version bound for Aqua.jl in test/Project.toml:

Aqua = "4c88cf16-eb10-579e-8560-4a9242c79595"
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"

Aqua = "0.6"

Note that Aqua 0.5 and 0.4 are still maintained. Aqua 0.4, 0.5, and 0.6 are different only by the default enabled flags as of writing.


You can add the following line in to include Aqua.jl badge:

[![Aqua QA](](

which is rendered as

Aqua QA

Required Packages