Skip to content
CAI
Software that uses CAICheck a score

vitorsvieira/dilate

47.9

Weak · 21 September 2026

578

lines of production code

Scala

primary language

4

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is a Scala library that provides compile-time macros, specifically @newtype and @valueclass, to generate boilerplate code for type-safe wrappers and optimized value classes. It enables developers to create unboxed tagged types and value classes with zero runtime allocation by automatically expanding annotations into traits, types, and implicit conversions. The project includes comprehensive test coverage and build configurations for multiple Scala versions.

Features

Add Scala examples demonstrating @valueclass and @newtype macros

Added an examples file that showcases the newtype macro implementation, providing type-safe wrappers with zero runtime allocation for case classes. The file includes comparisons between standard case classes and those using the @valueclass and @newtype annotations, demonstrating how the macro generates newtypes for fields and handles default argument values.

examples/src/main/scala · medium confidence

Introduce @newtype and @valueclass macros for compile-time code generation

The library now provides two new compile-time macros, @newtype and @valueclass, which automatically generate boilerplate code for unboxed tagged types and value classes. The @newtype macro expands to generate traits, types, and implicit classes in the companion object, while @valueclass generates value classes and implicit definitions. These macros simplify the creation of type-safe wrappers and optimized value classes by handling the code generation at compile time.

src/main · high confidence

Behavioural changes

Updated project configuration and documentation

The project's build configuration was updated to set the version to 0.1.3-SNAPSHOT. The README was expanded to include a detailed overview, motivation, and usage examples for the \@valueclass\ and \@newtype\ macros. The Travis CI configuration was added to support Scala 2.11.11 and 2.12.3 on Oracle JDK 8. The LICENSE file was updated to reflect the correct copyright holder, and the .gitignore was updated to include .iml files.

(repo-wide) · medium confidence

Test coverage

Added tests for the @newtype and @valueclass macro annotations

Added two new test suites, NewTypeMacroSpec and ValueClassMacroSpec, which verify the compilation constraints and runtime behavior of the @newtype and @valueclass annotations. These tests confirm that the macros correctly restrict usage to classes, generate implicit conversions for the underlying types, and preserve access to class and companion object members after macro expansion.

src/test · high confidence

Dependencies

Upgrade Scala 2.12 support and add scalameta dependency

The build configuration has been updated to support Scala 2.12.3 (previously 2.12.1) and includes a new dependency on scalameta 1.8.0. Additionally, the project now integrates the SbtScalariform plugin for code formatting and enables various Scala compiler options such as -Xlint and -Ywarn-unused. The build also adds publishing and release configuration for Sonatype.

(dependencies) · medium 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 62 → 48 (-14.6)
  • Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 100 → 99 (-0.6)
  • Architecture 69 → 69 (+0.0)
  • Maturity 58 → 44 (-13.5)
  • Readiness 54 → 34 (-19.6)
  • Security 100 → 78 (-22.2)

Resolved (7)

  • Coverage not included — suite not readable by the collector
  • Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
  • No exposed public API
  • Test reliability not included
  • complexity unreadable for .scala — churn × complexity hotspots could not be measured
  • early-stage repository — too few commits for a meaningful bus factor
  • early-stage repository — too little history to judge knowledge freshness

New (7)

  • Documentation: no installation or build instructions (README.md)
  • Documentation: no usage examples (README.md)
  • Duplicated block (16–17 lines × 2) (src/main/scala/com/vitorsvieira/dilate/newtype.scala)
  • Duplicated block (6 lines × 2) (src/main/scala/com/vitorsvieira/dilate/newtype.scala)
  • Hotspot: src/main/scala/com/vitorsvieira/dilate/Dilate.scala (src/main/scala/com/vitorsvieira/dilate/Dilate.scala)
  • No SBOM
  • No build provenance

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

Survey your own repository

vitorsvieira/dilate 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 21 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 1ac09443a543b713a59ac984b633ddf7b9e986d7 — 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-fa71c66cabd8.