PHPackages                             yireo/magento2-extensionchecker - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. yireo/magento2-extensionchecker

ActiveMagento2-module[Utility &amp; Helpers](/categories/utility)

yireo/magento2-extensionchecker
===============================

Scan the code of a Magento module

2.5.12(7mo ago)96151.6k↓22.6%15[11 issues](https://github.com/yireo/Yireo_ExtensionChecker/issues)3OSL-3.0PHPPHP ^7.4|^8.1CI passing

Since Jan 1Pushed 4mo ago9 watchersCompare

[ Source](https://github.com/yireo/Yireo_ExtensionChecker)[ Packagist](https://packagist.org/packages/yireo/magento2-extensionchecker)[ Docs](https://github.com/yireo/Yireo_ExtensionChecker)[ Fund](https://www.paypal.me/yireo)[ GitHub Sponsors](https://github.com/yireo)[ RSS](/packages/yireo-magento2-extensionchecker/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (10)Dependencies (8)Versions (70)Used By (3)

Yireo ExtensionChecker
======================

[](#yireo-extensionchecker)

This extension validates the code of other extensions and is complementary to static code analysis tools like PHPCS.

Example usage
-------------

[](#example-usage)

```
bin/magento yireo_extensionchecker:scan --module Yireo_ExampleAdminhtml

```

Running this command might give the following output:

```
Dependency "Magento_Backend" not found module.xml
Dependency "Magento_Ui" not found module.xml
Dependency "magento/module-backend" not found composer.json. Current version is 101.0.2
Dependency "magento/module-ui" not found composer.json. Current version is 101.1.2
Dependency "psr/log" not found composer.json. Current version is 1.1.0

```

The output gives a hint to what to add to `composer.json`. For instance, a composer requirement `magento/module-ui` should be added and this could have a version constraint `^101.1` to match semantic versioning. Theoretically, this could also be `^101.0` or even `^100.0|^101.0`, but for this, deep-code analysis (by you) would be needed.

Note that you can also pass multiple modules to the `--module` flag by separating them with a comma:

```
bin/magento yireo_extensionchecker:scan --module Yireo_Example1,Yireo_Example2,Yireo_Example3
```

Listing dependencies (as in: dependencies detected by this ExtensionChecker) could be done with the following command:

```
bin/magento yireo_extensionchecker:list-dependencies --module Yireo_Example
bin/magento yireo_extensionchecker:list-dependencies --module Yireo_Example --format=json | jq
```

Installation
------------

[](#installation)

Install the module as a composer requirement for developer environments:

```
composer require --dev yireo/magento2-extensionchecker
bin/magento module:enable Yireo_ExtensionChecker

```

Note that if you want to scan a module, this module also needs to be enabled. Personally, we use this extension in our CI/CD chain, to make sure zero issues are reported at all times.

Deprecated dependencies
-----------------------

[](#deprecated-dependencies)

Class dependencies (injected via the constructor) are inspected to see if they are deprecated, for the used Magento version. You can skip this behaviour by adding a flag `--hide-deprecated` to the command:

```
bin/magento yireo_extensionchecker:scan --module Yireo_Example --hide-deprecated=1

```

Undeclared dependencies
-----------------------

[](#undeclared-dependencies)

Class dependencies (injected via the constructor) are traced back to their corresponding module (or the framework or something else), which should be reflected upon in the `composer.json` file and the `module.xml` file. Of each composer dependencies, the current version is also reported.

Also, by tokenizing the PHP source, it is detected whether the `composer.json` file should reflect a specific PHP extension (for example, `ext-json`) when an extension-specific PHP function is used (for example, `json_encode`).

@todo: Hard-coded Proxies
-------------------------

[](#todo-hard-coded-proxies)

A Proxy is a DI trick which should be configured in the `di.xml` file of a module and not be hard-coded in PHP. The extension could report this.

@todo: Check other methods for signature
----------------------------------------

[](#todo-check-other-methods-for-signature)

If another method than the constructor contains type hints for imported namespaces, those namespaces lead to further dependencies with the module. For example, if a specific method returns an object of type `Magento/ModuleX/SomeInterface` then `Magento_ModuleX` would need to be reported as a dependency.

@todo: Scan for `@since`
------------------------

[](#todo-scan-for-since)

Scan class dependencies for `@since` and double-check if this minimum version matches with the composer requirements.

File `.yireo-extension-checker.json`
------------------------------------

[](#file-yireo-extension-checkerjson)

Sometimes a scan shows that dependencies are not needed, even though you disagree. To override this, you can add a file `.yireo-extension-checker.json` to your module folder with a content like the following:

```
{
  "ignore": [
    "Yireo_Example",
    "yireo/magento2-example"
  ]
}
```

Tip: Check multiple modules
---------------------------

[](#tip-check-multiple-modules)

You can quickly check upon multiple modules with a command like this:

```
bin/magento yireo_extensionchecker:scan --module $(bin/magento module:status --enabled | grep -e Yireo_ | awk '{printf "%s%s",sep,$0; sep=","} END{print""}') --hide-needless 1 --hide-deprecated 1
```

Generate module.xml
-------------------

[](#generate-modulexml)

Based on the found dependencies, a sample `module.xml` output can be generated. Note that you will need to copy and paste the output yourself:

```
bin/magento yireo_extensionchecker:suggest:module-xml Yireo_Example
```

Likewise, the `require` section of the `composer.json` file can be generated too:

```
bin/magento yireo_extensionchecker:suggest:composer-json Yireo_Example
```

###  Health Score

61

—

FairBetter than 99% of packages

Maintenance70

Regular maintenance activity

Popularity48

Moderate usage in the ecosystem

Community28

Small or concentrated contributor base

Maturity84

Battle-tested with a long release history

 Bus Factor1

Top contributor holds 92.8% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~37 days

Total

68

Last Release

211d ago

Major Versions

1.2.17 → 2.0.02022-09-28

PHP version history (5 changes)1.0.0PHP &gt;=7.0.0

1.1.3PHP &gt;=7.2.0

1.2.3PHP &gt;=7.2.0|^8.0

1.2.10PHP ^7.4|^8.0

2.0.0PHP ^7.4|^8.1

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/1373981?v=4)[Yireo](/maintainers/yireo)[@yireo](https://github.com/yireo)

---

Top Contributors

[![jissereitsma](https://avatars.githubusercontent.com/u/7670482?v=4)](https://github.com/jissereitsma "jissereitsma (349 commits)")[![iranimij](https://avatars.githubusercontent.com/u/31434218?v=4)](https://github.com/iranimij "iranimij (12 commits)")[![sprankhub](https://avatars.githubusercontent.com/u/930199?v=4)](https://github.com/sprankhub "sprankhub (5 commits)")[![HenKun](https://avatars.githubusercontent.com/u/18382633?v=4)](https://github.com/HenKun "HenKun (2 commits)")[![lbajsarowicz](https://avatars.githubusercontent.com/u/1639941?v=4)](https://github.com/lbajsarowicz "lbajsarowicz (1 commits)")[![Maksold](https://avatars.githubusercontent.com/u/325244?v=4)](https://github.com/Maksold "Maksold (1 commits)")[![pykettk](https://avatars.githubusercontent.com/u/40261741?v=4)](https://github.com/pykettk "pykettk (1 commits)")[![cegento](https://avatars.githubusercontent.com/u/120014434?v=4)](https://github.com/cegento "cegento (1 commits)")[![Unlimitedbul](https://avatars.githubusercontent.com/u/9057446?v=4)](https://github.com/Unlimitedbul "Unlimitedbul (1 commits)")[![DanielSousa](https://avatars.githubusercontent.com/u/906610?v=4)](https://github.com/DanielSousa "DanielSousa (1 commits)")[![frqnck](https://avatars.githubusercontent.com/u/479874?v=4)](https://github.com/frqnck "frqnck (1 commits)")[![hws47a](https://avatars.githubusercontent.com/u/604641?v=4)](https://github.com/hws47a "hws47a (1 commits)")

---

Tags

magento2-modulemagentocomposer-installer

### Embed Badge

![Health badge](/badges/yireo-magento2-extensionchecker/health.svg)

```
[![Health](https://phpackages.com/badges/yireo-magento2-extensionchecker/health.svg)](https://phpackages.com/packages/yireo-magento2-extensionchecker)
```

###  Alternatives

[yireo/magento2-googletagmanager2

Add Google Tag Manager to Magento

167930.4k5](/packages/yireo-magento2-googletagmanager2)[magento/magento2-functional-testing-framework

Magento2 Functional Testing Framework

15511.5M30](/packages/magento-magento2-functional-testing-framework)[yireo/magento2-webp2

Magento 2 module to add WebP support to the Magento frontend

2091.2M7](/packages/yireo-magento2-webp2)[magento/magento-composer-installer

Composer installer for Magento modules

7523.3M318](/packages/magento-magento-composer-installer)[run-as-root/magento2-prometheus-exporter

Magento2 Prometheus Exporter

69344.4k](/packages/run-as-root-magento2-prometheus-exporter)[aedart/athenaeum

Athenaeum is a mono repository; a collection of various PHP packages

245.2k](/packages/aedart-athenaeum)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
