Skip to content
CAI
Software that uses CAICheck a score

eproxus/meck

65.1

Adequate · 23 September 2026

2.5k

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 a mocking library for Erlang, designed to intercept and verify function calls, manage mock states, and generate mock code. It provides capabilities for argument matching, return specification, and call history tracking, supported by a comprehensive test suite. The project has been modernized with a Rebar 3 build system and automated release processes, while legacy tooling and documentation have been removed.

Features

Automated release cutting script added

A new shell script, cut.sh, has been introduced to automate the process of preparing a release. This script validates that required tools (git, sed, rebar3) are available, ensures the repository is clean, updates version numbers in source and documentation files, and then automatically commits changes, creates a signed tag, and pushes to the remote repository. It also handles cleaning build artifacts and publishing the package via rebar3.

.scripts · high confidence

Architecture

Refactored internal architecture with new modules for argument matching, return specs, and code generation

The library's internal implementation has been restructured into dedicated modules: meck\_args\_matcher handles argument matching, meck\_ret\_spec manages return value specifications, meck\_code handles abstract code manipulation, meck\_code\_gen generates mock module code, meck\_expect processes expectations, meck\_history tracks calls, meck\_matcher supports matcher abstractions, meck\_proc manages mock state, and meck\_util provides helpers. This refactoring improves code organization and maintainability while preserving the existing public API.

src · high confidence

Behavioural changes

Migrate build system from Make to Rebar 3

The project has transitioned its build system from a custom Makefile to Rebar 3. This change updates the build process to use \rebar3\ for compilation, testing, and documentation generation, replacing the previous \make\-based workflow. The \Makefile\ and \vsn.mk\ files have been removed in favor of \rebar.config\ and \rebar.lock\. This affects how developers build the project and run tests, requiring the use of \rebar3\ commands instead of \make\ targets.

(repo-wide) · high confidence

Removed legacy build and test utilities

The \make\_doc\, \releaser\, and \run\_test\ utility scripts have been removed from the \util\ directory. This change eliminates the previous Make-based documentation generation, shell-based release process, and Erlang-based test runner, reflecting a shift away from these specific tooling components.

util · high confidence

Removed obsolete edoc documentation file

The legacy edoc-based documentation file (doc/overview.edoc) has been removed from the repository. This change reflects a shift away from the edoc documentation generation tool, likely in favor of a modern documentation generator such as ex\_doc.

doc · high confidence

Test coverage

Added tests for argument matchers, expectations, history, and performance

Added new test modules to verify argument matching, expectation handling, call history, and performance benchmarks. Specifically, \meck\_args\_matcher\_tests.erl\ tests the new argument matcher functionality, \meck\_expect\_tests.erl\ covers expectation logic, \meck\_history\_tests.erl\ validates call history features, and \meck\_performance\_test.erl\ provides performance benchmarks. Additionally, \meck\_matcher\_tests.erl\ tests the core matcher implementation, \meck\_ret\_spec\_tests.erl\ covers return specifications, and \meck\_on\_load\_tests.erl\ tests the \enable\_on\_load\ option. A new \cover\_test\_module.dontcompile\ and \cover\_test.hrl\ are added for coverage testing, while \meck\_test\_module.erl\ is updated with attributes for testing. The \meck\_tests.erl\ file is significantly expanded to include numerous new test cases for features like \num\_calls\, \called\, \sequence\, and \loop\ expectations.

test · 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

This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.

Score

  • CAI 63 → 65 (+2.4)
  • Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 89 → 96 (+6.7)
  • Architecture 100 → 100 (+0.0)
  • Maturity 53 → 56 (+2.9)
  • Readiness 56 → 66 (+9.2)
  • Security 80 → 67 (-13.1)

Resolved (10)

  • Coverage not included — suite not readable by the collector
  • Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • No exposed public API
  • Off-boarding risk: anonymized user #1
  • Test reliability not included
  • TooManyMethods: meck_proc (src/meck_proc.erl)
  • complexity unreadable for .erl, .hrl — churn × complexity hotspots could not be measured

New (16)

  • Coverage not measured — no coverage collector is wired up
  • Dependency hygiene PARTLY measured — rebar3 pinning read, dependency currency not (no rebar.lock-pinned Hex declaration to grade)
  • Documentation: no installation or build instructions (README.md)
  • Documentation: no usage examples (README.md)
  • Duplicated block (6 lines × 2) (src/meck_history.erl)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • Hotspot: src/meck_proc.erl (src/meck_proc.erl)
  • No SBOM
  • No artifact signing
  • No build provenance
  • TodoComment (src/meck_proc.erl)
  • Unpinned build actions
  • Workflow token permissions not restricted
  • meck_proc.handle_call (cyclomatic 24) (src/meck_proc.erl)

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

Survey your own repository

eproxus/meck 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 23 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 de14958ea03a0c0a154da83120803f095360640b — 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-955b9cee9818.