Skip to content
CAI
Software that uses CAICheck a score

rrrene/inch_ex

67.4

Adequate · 18 September 2026

2.5k

lines of production code

Elixir

primary language

1

measurement over time

CAI band scale
CAI lens gauges

What this system is

Inch for Elixir is a static analysis tool that evaluates and grades the quality of Elixir code documentation. It provides a command-line interface to generate detailed reports, explain specific code objects, and integrate with CI systems. The system scores documentation based on the presence of docstrings, examples, and metadata, assigning letter grades to modules and functions.

How it got here

2014 — Inch for Elixir v2.1.0 migration

7 changes.

The project was upgraded to version 2.1.0, requiring Elixir 1.15+ and replacing legacy configuration and JSON libraries with modern standards. Significant refactoring simplified the documentation generation API and removed obsolete local and remote reporting features. The release also introduced new CLI tasks and comprehensive test infrastructure to ensure compatibility with current Elixir and Phoenix versions.

2018–2025 — Inch 2.0 CLI and scoring rewrite

6 changes.

The project underwent a major rewrite to version 2.0, introducing a new CLI architecture with dedicated info, report, and explain commands. A comprehensive documentation scoring and grading system was implemented to evaluate code objects based on specific roles and attributes. The update was supported by new test coverage and a Phoenix-based fixture to validate static analysis against real-world codebases.

Features

Added InchTest fixture application for static analysis testing

A new test fixture application named InchTest has been added to the test\_fixtures directory. This Phoenix-based application includes a complete web stack (router, controllers, LiveView components, layouts) and a custom InchTest module containing an LED sequence struct and a GenServer. It is designed to serve as a reproducible codebase for static analysis tools, specifically to address issues related to macro recognition in the InchEx linter.

_test\_fixtures/inch\test · high confidence

New CLI commands for documentation explanation, reporting, and system info

The CLI now includes three new commands: \explain\ allows users to inspect specific code objects by name or location, providing detailed scoring and priority breakdowns; \report\ sends evaluation results to the Inch CI server, automatically detecting CI environments (including GitHub Actions, Travis, and CircleCI) and skipping pull-request-only builds; and \info\ displays debug information about the current Inch, Elixir, and Erlang versions. These additions expand the tool's capabilities from simple reporting to interactive analysis and automated CI integration.

_lib/inch\ex/cli · high confidence

Removals

Removal of local and remote Inch reporters

The local and remote reporting modules have been removed from the codebase. Users can no longer run Inch locally via the \INCH\_PATH\ environment variable or submit reports to the remote API endpoint (\http://localhost:3000/api/v1\) through these specific reporter components.

_lib/inch\ex/reporter · high confidence

Behavioural changes

Inch 2.0: New CLI architecture with info, report, and explain commands

Inch Ex has been rewritten as version 2.0, introducing a new command-line interface with dedicated \info\, \report\, and \explain\ commands, replacing the previous single-command structure. The application now uses a GenServer-based shell for output handling and supports JSON output via Jason. Documentation evaluation has been improved to support macros, delegates, and v2 annotation formats, while ignoring files without documentation chunks. The system now includes grade distribution in JSON reports and unified role naming.

_lib/inch\ex · high confidence

Inch for Elixir v2.1.0: Elixir 1.15+ requirement and new explain/JSON features

This release updates the tool to require Elixir \>= 1.15.0 (dropping support for older versions) and fixes compatibility issues with newer Elixir releases. Users can now use the \mix inch explain\ command with a function name as the first argument to get detailed documentation feedback, and the JSON output includes a grade distribution summary. The project has also been renamed to 'Inch for Elixir' and includes a new \.formatter.exs\ configuration for code formatting.

(repo-wide) · high confidence

Introduce \`mix inch.report\` task and refactor \`mix inch\` CLI

A new \mix inch.report\ task is added to generate documentation reports, which compiles the project and delegates to the InchEx CLI. The existing \mix inch\ task is simplified to also delegate to the CLI, and its help text is updated to reflect its role in showing documentation evaluation. Additionally, a stub task \mix inchci.add\ is introduced to indicate that CI integration features are not yet supported in Inch 2.0.

lib/mix · high confidence

Migrate configuration syntax to Elixir 1.10+ import Config

The application configuration has been updated to use the modern \import Config\ syntax instead of the deprecated \use Mix.Config\. This change aligns the codebase with current Elixir standards, ensuring compatibility with newer versions of the language and removing compiler warnings associated with the legacy configuration module.

config · high confidence

New documentation scoring and grading system for code objects

The \lib/inch\_ex/code\_object\ module has been replaced with a new set of components that evaluate and score code documentation. \InchEx.CodeObject.Roles\ now identifies specific documentation attributes such as the presence of docstrings, code examples, metadata, and parameter mentions. \InchEx.CodeObject.Score\ calculates a numeric score (0-100) based on these roles, applying different weighting logic for modules, functions, macros, and types. \InchEx.CodeObject.Grade\ maps these scores to letter grades (A, B, C, U) with corresponding descriptions and colors, while \InchEx.CodeObject.Priority\ determines the visual priority arrow for each item based on its type and roles.

_lib/inch\_ex/code\object · high confidence

Refactored documentation generation API and module structure

The InchEx module has been significantly refactored to simplify its public interface and internal architecture. The previous \generate\_docs/3\ function, which required explicit project, version, and options arguments to build a configuration struct, has been removed. It is replaced by \get\_evaluated\_docs/0\ and \get\_evaluated\_docs/1\, which automatically retrieve and evaluate documentation from the current project's compiled beam files. The internal configuration struct and URL-guessing helpers have been removed in favor of direct usage of the \InchEx.Docs\ and \InchEx.CodeObject\ modules, streamlining how documentation is retrieved and processed.

lib · high confidence

Test coverage

Added Phoenix test fixture for integration testing; Added test infrastructure and integration tests for InchEx; Added tests for code object evaluation and docstring extraction.

Dependencies

InchEx upgraded to v2.1.0 with modern Elixir and dependency stack

InchEx has been updated to version 2.1.0, raising the minimum supported Elixir version to 1.15.0 and replacing the legacy \json\ library with \jason\ for JSON encoding. The project now includes \credo\ for static code analysis and \mix\_test\_watch\ for automated test running during development. A new test fixture (\test\_fixtures/inch\_test\) was added to validate the tool against a modern Phoenix 1.8 application, ensuring compatibility with current web development standards.

(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

Baseline

  • First survey — no prior run to compare against. CAI 67.

Lenses

  • Code Health 100
  • Architecture 93
  • Maturity 53
  • Readiness 66
  • Security 94

Changes since last survey

  • 183 commits — 164 feature/other, 19 fixes

By area

  • (root) — 87 commits
  • lib/inch_ex — 63 commits
  • (repo) — 20 commits
  • lib/mix — 5 commits
  • .github/workflows — 3 commits
  • test_fixtures/inch_test — 2 commits
  • test/check_formatted.sh — 1 commit
  • test/inch_ex_test.exs — 1 commit
  • test_fixtures/run_and_export.sh — 1 commit

Notable commits

  • fix: Fix @doc false for callbacks
  • fix: Fix CHANGELOG and mix.exs
  • fix: Fix Determination of CircleCI Validity
  • fix: Fix Elixir 1.3 compiler warnings
  • fix: Fix INCH_CLI_API env var reading
  • fix: Fix api endpoint and output of response
  • fix: Fix bug with client version in Formatter
  • fix: Fix bug with function names made up of numbers
  • fix: Fix deps entry in README
  • fix: Fix horizontal bars in output
  • fix: Fix integration test for 1.18.4
  • fix: Fix object_type reader
  • fix: Fix parameter extraction from fun signatures
  • fix: Fix tests
  • fix: Fix unsupported anno format
  • fix: Merge pull request #31 from DavidAntaramian/fix-circle-integration
  • fix: Merge pull request #97 from msimonborg/fix-compiler-warnings
  • fix: fix warning because jason app is not declared as dependency
  • fix: update deps, update elixir/erlang, fix compiler warnings
  • change: Add -v switch to Mix.Tasks.Inch
  • …and 163 more

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

Survey your own repository

rrrene/inch_ex 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 18 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit b29a10a1f0748345ec79e490ebc036b3e171c35a — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-5d04157a340d.