Skip to content
CAI
Software that uses CAICheck a score

doctrine/common

59.6

Adequate · 19 September 2026

2.2k

lines of production code

PHP

primary language

1

measurement over time

CAI band scale
CAI lens gauges

What this system is

This system is the Doctrine Common library, a foundational PHP component that provides core utilities such as class loading, object comparison, and debugging helpers. It also manages legacy proxy generation mechanisms, which are currently deprecated in favor of the doctrine/persistence package. The codebase includes comprehensive test coverage and static analysis configurations to ensure stability across supported PHP versions.

Features

Initial project configuration and documentation files

This change introduces the foundational configuration and documentation files for the Doctrine Common project. It adds \.doctrine-project.json\ to define version metadata (current 3.5, maintained 3.4-3.0, unmaintained 2.13-2.11), \.gitattributes\ and \.gitignore\ to manage repository exports and local artifacts, and standard configuration files for testing and static analysis (\phpunit.xml.dist\, \phpstan.neon.dist\, \psalm.xml\, \phpcs.xml.dist\). It also includes the \LICENSE\ (MIT), \README.md\, \SECURITY.md\, and upgrade guides (\UPGRADE\_TO\_2\_1\, \UPGRADE\_TO\_2\_2\) to inform users of migration paths and security reporting procedures.

(repo-wide) · high confidence

Behavioural changes

Deprecation of the Doctrine\\Common\\Proxy namespace

The entire \Doctrine\\Common\\Proxy\ namespace, including \AbstractProxyFactory\, \ProxyGenerator\, \Autoloader\, and related exception classes, is now deprecated as of doctrine/common 3.5. Users relying on this legacy proxy generation mechanism will receive deprecation notices and should migrate to the proxy handling provided by \doctrine/persistence\.

src/Proxy · high confidence

Introduction of deprecated Doctrine Common utility classes

The src directory now includes several classes from the Doctrine Common package, including ClassLoader, CommonException, Comparable, and utility classes in src/Util (ClassUtils and Debug). These components are marked as deprecated and will be removed in version 4.0 of doctrine/common. ClassLoader provides autoloading functionality, CommonException serves as a base exception class, Comparable defines an interface for object comparison, and the Util classes offer reflection and debugging helpers, with Debug specifically recommending migration to symfony/var-dumper.

src, src/Util · high confidence

Test coverage

Add test infrastructure and ignore rules; Added tests for ClassLoader and Proxy subsystems.

Dependencies

Initial release of doctrine/common with PHP 7.1+ and Doctrine Persistence support

This change introduces the \doctrine/common\ package via a new \composer.json\, establishing it as a standalone library. It requires PHP 7.1 or 8.0 and depends on \doctrine/persistence\ versions 2.0, 3.0, or 4.0. The package includes development dependencies for testing and static analysis, specifically PHPUnit (7.5.20, 8.5, or 9.0), PHPStan (1.4.1+), Psalm (4.4+), and Doctrine Coding Standard (9.0 or 14.0).

(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 60.

Lenses

  • Code Health 97
  • Architecture 100
  • Maturity 36
  • Readiness 72
  • Security 82

Changes since last survey

  • 300 commits — 265 feature/other, 35 fixes

By area

  • (repo) — 115 commits
  • (root) — 60 commits
  • .github/workflows — 50 commits
  • lib/Doctrine — 29 commits
  • tests/Doctrine — 27 commits
  • tests/Common — 9 commits
  • src/Proxy — 7 commits
  • .github/dependabot.yml — 2 commits
  • docs/en — 1 commit

Notable commits

  • fix: "Fix" phpstan errors
  • fix: Add assertion to fix type check of phpstan
  • fix: Automated fixes
  • fix: Automated fixes
  • fix: Bugfix: Enum default values require a use statement for correct serialization.
  • fix: Cody style check fixes (tabs/spaces)
  • fix: Fix "Equals sign not aligned correctly"
  • fix: Fix #917, ProxyGenerator magic __set
  • fix: Fix #922, ProxyGenerator missing assert
  • fix: Fix 7.1 incompatibility, run phpstan on 8.0
  • fix: Fix Documentation link
  • fix: Fix PHPUnit deprecations (#969)
  • fix: Fix build with slevomat/coding-standard 8 (#981)
  • fix: Fix consts in default values
  • fix: Fix deprecation about implicit null when generating proxies.
  • fix: Fix nullable union types for PHP8
  • fix: Fix proxies with return types in magic methods
  • fix: Fix return type for union type with intersection
  • fix: Fix unnecessary linebreak
  • fix: Manual fixes
  • …and 280 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

doctrine/common 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 19 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 da0faa474d4acf7a91e1e92cab6353c740e1c4ee — 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-13a154b7f5d1.