symfony/symfony
53.6
Adequate · 29 July 2026
381.5k
lines of production code
PHP
primary language
2
measurements over time
How this codebase got here
Score
- CAI 44 → 54 (+9.7)
- Rubric changed (rubric-2026.08.17 → rubric-2026.08.18) — scores are not directly comparable.
Lenses
- Code Health 62 → 72 (+10.2)
- Architecture 100 → 100 (-0.1)
- Maturity 63 → 67 (+4.1)
- Readiness 38 → 73 (+35.7)
- Security 31 → 31 (+0.0)
- Domain Modelling 100 → 100 (+0.0)
Resolved (332)
- Change coupling: OidcTokenHandlerFactory.php ↔ OidcTokenHandler.php (src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/AccessToken/OidcTokenHandlerFactory.php)
- Dependency hygiene not measured — no supported dependency manifest was read
- Duplicated block (10 lines × 2) (src/Symfony/Bridge/PhpUnit/ClockMock.php)
- Duplicated block (10 lines × 2) (src/Symfony/Bridge/Twig/Command/DebugCommand.php)
- Duplicated block (10 lines × 2) (src/Symfony/Bundle/FrameworkBundle/Controller/AbstractController.php)
- Duplicated block (10 lines × 2) (src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/ContainerBuilderDebugDumpPass.php)
- Duplicated block (10 lines × 2) (src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/PhpConfigReferenceDumpPass.php)
- Duplicated block (10 lines × 2) (src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Configuration.php)
- Duplicated block (10 lines × 2) (src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Configuration.php)
- Duplicated block (10 lines × 2) (src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Configuration.php)
- Duplicated block (10 lines × 2) (src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php)
- Duplicated block (10 lines × 2) (src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php)
- Duplicated block (10 lines × 2) (src/Symfony/Bundle/FrameworkBundle/KernelBrowser.php)
- Duplicated block (10 lines × 2) (src/Symfony/Component/AssetMapper/ImportMap/Resolver/JsDelivrEsmResolver.php)
- Duplicated block (10 lines × 2) (src/Symfony/Component/BrowserKit/HttpBrowser.php)
- Duplicated block (10 lines × 2) (src/Symfony/Component/Cache/Adapter/AbstractTagAwareAdapter.php)
- Duplicated block (10 lines × 2) (src/Symfony/Component/Cache/Adapter/MemcachedAdapter.php)
- Duplicated block (10 lines × 2) (src/Symfony/Component/Cache/Adapter/PdoAdapter.php)
- Duplicated block (10 lines × 2) (src/Symfony/Component/Cache/Traits/RedisTrait.php)
- Duplicated block (10 lines × 2) (src/Symfony/Component/Console/ArgumentResolver/ValueResolver/ServiceValueResolver.php)
- …and 312 more
New (425)
- AbstractObjectNormalizer.denormalizeParameter (cyclomatic 21) (src/Symfony/Component/Serializer/Normalizer/AbstractObjectNormalizer.php)
- AbstractTagAwareAdapter.__construct (cognitive 28) (src/Symfony/Component/Cache/Adapter/AbstractTagAwareAdapter.php)
- AbstractTagAwareAdapter.__construct (cyclomatic 19) (src/Symfony/Component/Cache/Adapter/AbstractTagAwareAdapter.php)
- AbstractUnicodeString.replaceMatches (cognitive 16) (src/Symfony/Component/String/AbstractUnicodeString.php)
- Ask.tryFrom (cognitive 35) (src/Symfony/Component/Console/Attribute/Ask.php)
- Ask.tryFrom (cyclomatic 27) (src/Symfony/Component/Console/Attribute/Ask.php)
- AskChoice.tryFrom (cognitive 25) (src/Symfony/Component/Console/Attribute/AskChoice.php)
- AskChoice.tryFrom (cyclomatic 23) (src/Symfony/Component/Console/Attribute/AskChoice.php)
- AsyncResponse.__construct (cognitive 24) (src/Symfony/Component/HttpClient/Response/AsyncResponse.php)
- Change coupling: FrameworkExtension.php ↔ messenger.php (src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php)
- Change coupling: FrameworkExtension.php ↔ web.php (src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php)
- Change coupling: UnusedTagsPass.php ↔ FrameworkExtension.php (src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/UnusedTagsPass.php)
- ChoiceQuestion.getDefaultValidator (cognitive 26) (src/Symfony/Component/Console/Question/ChoiceQuestion.php)
- ChoiceQuestion.getDefaultValidator (cyclomatic 17) (src/Symfony/Component/Console/Question/ChoiceQuestion.php)
- ChoiceType.buildForm (cognitive 56) (src/Symfony/Component/Form/Extension/Core/Type/ChoiceType.php)
- ChoiceType.buildForm (cyclomatic 29) (src/Symfony/Component/Form/Extension/Core/Type/ChoiceType.php)
- ChoiceType.configureOptions (cyclomatic 17) (src/Symfony/Component/Form/Extension/Core/Type/ChoiceType.php)
- Configuration.addHttpClientSection (cognitive 24) (src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Configuration.php)
- Configuration.addHttpClientSection (cyclomatic 21) (src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Configuration.php)
- Configuration.addMessengerSection (cognitive 21) (src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Configuration.php)
- …and 405 more
Architecture
- Unchanged — 0 containers · 1 contexts · 0 edges
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
symfony/symfony 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 29 July 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 7dbebd843d25b2f72e2f7dfbe044c632941ea924 — the exact code this score is about.
- Scored under rubric-2026.08.18 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer latest.