Skip to content
CAI
Software that uses CAICheck a score

erlang/rebar3

73.3

Strong · 5 August 2026

32.9k

lines of production code

Erlang

primary language

5

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is the Rebar3 build tool for the Erlang ecosystem, designed to manage project compilation, dependency resolution, and testing workflows. It provides a comprehensive suite of features including shell completions, automated manpage generation, and extensive test coverage for core behaviors like aliasing, compilation, and plugin management. The codebase has been refactored to remove legacy application structures and embedded scripts, focusing instead on vendored dependencies and modular provider-based architecture.

How it got here

2009–2017 — Rebar3 migration and test stabilization

10 changes.

This period marks the transition from the legacy Rebar 2 codebase to Rebar3, characterized by the removal of obsolete headers, embedded build scripts, and deprecated utility modules. The team simultaneously established a robust system test suite to validate core behaviors, plugin interactions, and dependency handling, ensuring the new architecture functioned correctly.

2018–2022 — Dependency vendoring and test expansion

14 changes.

This period focused on deepening the project's reliance on vendored dependencies, updating libraries such as erlware\_commons, certifi, and eunit\_formatters to ensure consistent builds and OTP-28 readiness. Concurrently, the codebase expanded its test coverage by adding extensive Common Test suites for compiler, alias, and package handling, alongside new test fixtures and shell completion features.

Features

Add shell completion and project templates for rebar3

Users can now use bash, zsh, and fish shell completion for the rebar3 command line, and generate new projects from updated templates including Apache 2.0 license files in Markdown format, updated Makefiles for C/C++ builds, and structured OTP application, library, escript, release, and plugin templates.

apps/rebar/priv · high confidence

Added GRiSP application template with supervisor and application callback

The systest/all\_SUITE\_data/grisp\_explode location now includes a complete Erlang application structure for GRiSP development. This adds the application source file (mygrispproject.app.src) defining dependencies on kernel, stdlib, and grisp, alongside the main application module (mygrispproject.erl) implementing the application callback, and a top-level supervisor (mygrispproject\_sup.erl) using a one\_for\_all strategy. These files provide the foundational runtime structure for GRiSP applications.

_systest/all\_SUITE\_data/grisp\explode · medium confidence

Initial project scaffolding and configuration

The repository was initialized with essential configuration and metadata files, including a Dockerfile for containerized builds, an .editorconfig for consistent code formatting, and a .gitignore to exclude build artifacts. The project structure was established with a rebar.config defining profiles for testing, dialyzer analysis, and production builds, alongside a bootstrap script to compile the tool itself. Documentation and legal files such as the Apache 2.0 LICENSE, a comprehensive CONTRIBUTING guide, and a THANKS file acknowledging contributors were also added to the root directory.

(repo-wide) · high confidence

New test hooks for fast-fail and retry behavior

Added new Common Test hooks \cth\_fail\_fast\ and \cth\_retry\ to the \rebar\ application. The \cth\_fail\_fast\ module allows tests to abort immediately upon the first failure, while \cth\_retry\ collects failing test cases to generate a retry specification file for re-running them.

apps/rebar/src · high confidence

Vendored cf library for terminal color support

Added the cf Erlang library (version 0.3.1) to the vendor directory, enabling colored console output via format strings (e.g., \~! for foreground, \~\# for background). The library includes support for standard colors, bold text, underlining, and true color (RGB) output. It also includes a terminal capability check (cf\_term) that explicitly supports 'foot' and 'ghostty' terminals, ensuring color output is enabled for these environments.

vendor/cf · high confidence

Removals

Removal of rebar.hrl header file

The include/rebar.hrl header file has been removed from the project. This file previously defined the global\_state record and the CONSOLE macro, which are no longer present in the codebase.

include · high confidence

Removed deprecated utility modules

The \rebar\_app\_utils\, \rebar\_config\, \rebar\_doterl\_compiler\, \rebar\_rel\_utils\, and \rebar\_utils\ modules have been removed from the source tree. These legacy components are no longer part of the build tool's internal architecture, reflecting a cleanup of unused or obsolete code paths.

src · high confidence

Removed embedded Rebar build tool

The embedded Rebar build script (priv/rebar) has been removed from the project. This eliminates the self-contained Erlang-based build tool that was previously bundled with the application, meaning the project now relies on external tooling or a different build system for compilation and packaging.

priv · high confidence

Behavioural changes

Add alias\_clash test fixture with Apache-2.0 license

Added the alias\_clash test fixture, including the application source file (src/alias\_clash.app.src) and the main module (src/alias\_clash.erl). The application is configured with kernel and stdlib as dependencies, and the license is explicitly set to Apache-2.0.

_systest/all\_SUITE\_data/alias\clash · medium confidence

Add test fixture for a vendored dependency

A new test fixture has been added for a vendored dependency named 'fake\_dep', including its application resource file (specifying version 0.1.0 and Apache-2.0 license) and an empty Erlang module, to support system tests.

_systest/all\_SUITE\_data/compile\_deps/vendored/fake\dep · medium confidence

Automated generation of rebar3 manpages

The rebar3 manual pages are now generated automatically from the tool's internal provider list, ensuring the documentation stays in sync with the actual available commands and options. This change introduces a script that dynamically builds the manpage content, reflecting the current state of the tool's functionality rather than relying on static, manually maintained text.

manpages · high confidence

Removal of the rebar.app application file

The rebar.app file has been removed from the ebin directory. This change eliminates the explicit definition of the rebar application, its associated modules, and its environment configuration, indicating a shift away from treating rebar as a standard Erlang application with a structured .app metadata file.

ebin · high confidence

Updated erlware\_commons to version 1.8.0

The vendored erlware\_commons library has been updated to version 1.8.0. This update includes new modules such as ec\_assoc\_list for association list-based dictionaries, ec\_cmd\_log for command-line logging with color support, and ec\_cnv for type conversion utilities. The library also introduces a signature-based dictionary interface (ec\_dictionary) with multiple backends (dict, gb\_trees, orddict, rbdict, assoc\_list). Additionally, the build configuration has been updated to support OTP 26, including a script that conditionally applies dialyzer warnings based on the OTP release version.

_vendor/erlware\commons · high confidence

Updated system test fixtures for plugin and dependency handling

The system test suite was updated with new or modified test fixtures in the systest/all\_SUITE\_data directory. These changes include adding an alias\_clash test case to verify plugin override behavior, introducing a compile\_deps test that uses a local dependency plugin fetched from a specific Git repository, updating the grisp\_explode fixture to use rebar3\_grisp version 2.3.0 with a corresponding lock file, and adding a resource\_plugins test case that configures multiple external plugins (rebar\_tidy\_deps, rebar\_alias, rebar3\_appup\_plugin) and a hackney dependency with an override for platform-specific compilation options.

_systest/all\_SUITE\data · medium confidence

Updated vendored Erlang dependencies: certifi and getopt

The vendored Erlang dependencies have been updated. The \certifi\ library has been upgraded to version 2.13.0, which includes an updated CA certificate bundle for SSL/TLS connections. Additionally, the \getopt\ library has been vendored at version 1.0.2, providing command-line argument parsing capabilities. These updates ensure the project uses the latest available versions of these third-party libraries.

vendor/certifi · high confidence

Updated vendored hex\_core library to v0.18.0

The vendored \hex\_core\ library in \apps/rebar/src/vendored\ has been updated to version 0.18.0. This update includes new HTTP API modules for OAuth (\r3\_hex\_api\_oauth\), package owners (\r3\_hex\_api\_package\_owner\), and user management (\r3\_hex\_api\_user\), alongside updates to the core configuration and tarball handling (\r3\_hex\_erl\_tar\) to support the new features and improve compatibility.

apps/rebar/src/vendored · high confidence

Vendored cth\_readable 1.6.1 for OTP-28 readiness

The \cth\_readable\ Common Test hook library has been vendored into the project at version 1.6.1. This update includes cleaning up code for OTP-28 readiness, particularly around type usage, and ensures the library is available locally for build and test execution.

_vendor/cth\readable · medium confidence

Vendored eunit\_formatters 0.6.0 for improved test output

The project has vendored the eunit\_formatters library (version 0.6.0) into the vendor/eunit\_formatters directory. This brings in a better output formatter for eunit tests, enabling features like progress reporting, colored output, and test timing profiling directly from the vendored code.

_vendor/eunit\formatters · high confidence

Test coverage

Add system test suite for rebar3 core behaviors; Added extensive test coverage for Rebar3 components; Added test fixtures for Rebar edoc and xref suites.

Dependencies

Rebar3 3.27.0 release with updated dependencies and deterministic compilation

Rebar3 has been updated to version 3.27.0, incorporating several dependency upgrades including erlware\_commons 1.8.0, certifi 2.13.0, and eunit\_formatters 0.6.0. The release also introduces deterministic compilation for the xrl and yrl compilers, ensuring consistent build outputs, and configures rich compiler error messages for improved user feedback.

apps/rebar · medium confidence

Vendor ssl\_verify\_fun dependency

The ssl\_verify\_fun Erlang library (version 1.1.6) has been vendored into the project's local dependencies, allowing the build system to use this specific version directly rather than fetching it remotely.

(dependencies) · medium confidence

Vendored bbmustache and ssl\_verify\_fun dependencies

The project has vendored the bbmustache (v1.12.2) and ssl\_verify\_fun (v1.1.6) libraries, including their source code, build configurations, and license files, to ensure consistent builds and bootstrap from these dependencies.

_vendor/bbmustache, vendor/ssl\_verify\fun · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Score

  • CAI 73 → 73 (-0.0)
  • Rubric changed (rubric-2026.08.18 → rubric-2026.08.19) — scores are not directly comparable.

Lenses

  • Code Health 89 → 89 (+0.0)
  • Architecture 100 → 100 (+0.0)
  • Maturity 64 → 64 (+0.0)
  • Readiness 73 → 73 (+0.0)
  • Security 85 → 84 (-0.3)
  • Event Sourcing 100 → 100 (+0.0)

Resolved (1)

  • Off-boarding risk: anonymized user #1

New (3)

  • Medium IaC: CKV_DOCKER_3 (Dockerfile)
  • Off-boarding risk: anonymized user #1
  • The template README is a single line with only the build command ('$ rebar3 compile') and no description or any documentation, making it unusable as a real README. (apps/rebar/priv/templates/README.md)

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

erlang/rebar3 was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 5 August 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 034af2338398908a403831ac8b3e8c84e7bc4120 — the exact code this score is about.
  • Scored under rubric-2026.08.19 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer latest.