Skip to content
CAI
Software that uses CAICheck a score

adobe/elixir-styler

72.2

Strong · 3 October 2026

3.1k

lines of production code

Elixir

primary language

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

Styler is an Elixir code formatter plugin that automatically rewrites source code to enforce consistent style rules. It handles structural transformations such as alias lifting, block simplification, and deprecation updates, while also managing configuration sorting and comment directives. The system integrates directly into the Elixir build process via \mix format\ and includes experimental tasks for inlining attributes and removing unused imports.

Features

New code style rules for blocks, configuration, and module directives

The \lib/style\ library introduces several new formatting styles: \Blocks\ rewrites single-clause \case\ statements to assignments, simplifies \with\ statements to \if\ or \case\, and standardizes \cond\ final clauses to use \true\; \Configs\ automatically sorts and groups \config\ stanzas in \.exs\ files to help identify duplicate settings; \ModuleDirectives\ expands multi-aliases, sorts directive groups (like \alias\, \import\, \require\), and enforces a strict layout order; \CommentDirectives\ adds support for the \\# styler:sort\ comment to maintain sorted wordlists and lists; and \Deprecations\ handles Elixir 1.16+ and 1.17+ changes such as rewriting \:timer.hours/minutes/seconds\ to \to\_timeout/1\ and \DateTime.add\ to \DateTime.shift\.

lib/style · high confidence

Behavioural changes

Experimental styling tasks added; legacy \`mix style\` task removed

The library introduces two new experimental Mix tasks: \mix styler.inline\_attrs\, which inlines single-reference module attributes (with a warning that it may produce invalid code), and \mix styler.remove\_unused\, which automatically removes unused imports, aliases, and requires by parsing compiler warnings. Concurrently, the legacy \mix style\ task has been removed from the codebase.

lib/mix · high confidence

New configuration system for alias lifting exclusions and Elixir version support

Styler now introduces a dedicated configuration module that allows users to specify which modules should be excluded from alias lifting via the \alias\_lifting\_exclude\ setting, supporting both standard atoms and \Elixir.\-prefixed atoms. Additionally, users can define a \minimum\_supported\_elixir\_version\ to ensure compatibility checks are performed against a specific Elixir version, with the system validating that the running version meets this requirement.

lib/styler · high confidence

Styler is now a formatter plugin with improved error handling and alias resolution

Styler now implements the Mix.Tasks.Format behavior, allowing it to function as a native Elixir formatter plugin that processes .ex and .exs files. The core styling engine has been refactored to pass a context (containing comments and file information) to style runs, enabling better comment handling and line number maintenance during AST transformations. A new AliasEnv module has been introduced to track and resolve module aliases during traversal, supporting features like alias lifting. Additionally, error handling has been improved: the Styler.StyleError now provides a formatted message with a direct link to the GitHub issues page, and the main styling loop is configured to skip individual style failures and continue processing rather than crashing the entire file.

lib · high confidence

Styler is now a formatter plugin with new configuration options

Styler has transitioned from a standalone \mix style\ task to an Elixir formatter plugin. Users must now add \plugins: \[Styler\]\ to their \.formatter.exs\ file and run \mix format\ to apply Styler's rewrites. The plugin configuration now supports \alias\_lifting\_exclude\ to specify modules to ignore during alias lifting, and \minimum\_supported\_elixir\_version\ to control deprecation rewrites based on the target Elixir version. Additionally, the \.tool-versions\ file has been added to specify Elixir 1.19.5 and Erlang 28.4 as the development environment.

(repo-wide) · high confidence

Test coverage

Added tests for alias lifting in module directives; Enhanced test support with idempotency checks and detailed AST debugging; Expanded test coverage for alias resolution, configuration, and comment handling; Expanded test coverage for style rewrites and directives.

Dependencies

Release v1.12.2 with Elixir 1.15 requirement and documentation updates

This release bumps the version to 1.12.2 and raises the minimum required Elixir version from 1.14 to 1.15. It introduces \ex\_doc\ as a development-only dependency for documentation generation and updates the package metadata to include a link to the changelog. The documentation configuration has been expanded to organize extra files into a 'Features' group and includes specific pages for styles, comment directives, control flow macros, deprecations, mix configs, module directives, pipe chains, and Credo integration.

(dependencies) · 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 72 → 72 (+0.6)
  • Rubric changed (rubric-2026.09.15 → rubric-2026.10.1) — scores are not directly comparable.

Lenses

  • Code Health 97 → 97 (+0.0)
  • Architecture 99 → 99 (+0.3)
  • Maturity 59 → 59 (+0.0)
  • Readiness 67 → 69 (+2.4)
  • Security 100 → 100 (+0.0)

Findings

  • No change — the same findings as the prior survey.

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

Survey your own repository

adobe/elixir-styler 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 3 October 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit e6ac04a482cbd9732d85b3a13b57d0d3fea48e60 — the exact code this score is about.
  • Scored under rubric-2026.10.1 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-8fe32cd45d00.