PHPackages                             gugamd93/drupal-quality-checker - 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. [Testing &amp; Quality](/categories/testing)
4. /
5. gugamd93/drupal-quality-checker

ActiveProject[Testing &amp; Quality](/categories/testing)

gugamd93/drupal-quality-checker
===============================

Setups code quality checking tools for Drupal project.

20

Since Aug 4Pushed 3y agoCompare

[ Source](https://github.com/gugamd93/drupal-quality-checker)[ Packagist](https://packagist.org/packages/gugamd93/drupal-quality-checker)[ RSS](/packages/gugamd93-drupal-quality-checker/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependenciesVersions (1)Used By (0)

Drupal Code Quality Checker
===========================

[](#drupal-code-quality-checker)

---

Overview
--------

[](#overview)

Provides set of libraries to easily setup code quality checks based on [GrumPHP](https://github.com/phpro/grumphp) for Drupal module/theme/profile. Check out this [Lullabot article](https://www.lullabot.com/articles/how-enforce-drupal-coding-standards-git) for more details.

> *Note:* This library aim to help contributed/custom Drupal module/theme/profile hosted in individual git repository.

Install
-------

[](#install)

1. Add `gugamd93/drupal-quality-checker` to `composer.json` (like [here](https://github.com/vijaycs85/modal_config/blob/8.x-1.x/composer.json#L21)) or just `composer require --dev gugamd93/drupal-quality-checker`
2. Replace `grumphp.yml` in project's root directory (not Drupal root directory) with `vendor/gugamd93/drupal-quality-checker/grumphp.yml.dist`

That's it. Now, all tasks (listed below) run on every `git commit`.

> *Note:* As part of install, GrumPHP adds `pre-commit` hook to repository. Existing `pre-commit` might get [destroyed](https://github.com/phpro/grumphp/issues/416) when install/uninstall.

Features
--------

[](#features)

1. [PHPCS](https://github.com/squizlabs/PHP_CodeSniffer) with Drupal standard.
2. [PHP Lint](http://www.icosaedro.it/phplint/)
3. [YAML Lint](http://www.yamllint.com/)
4. [Composer](https://github.com/composer/composer)
5. [Composer Normalize](https://github.com/ergebnis/composer-normalize)
6. [JSONLint](https://jsonlint.com/)
7. [PHP Copy/Paste Detector (CPD)](https://github.com/sebastianbergmann/phpcpd)

Long list of additional checks/validators available [here](https://github.com/phpro/grumphp/blob/master/doc/tasks.md#tasks-1).

Sample
------

[](#sample)

### Pass

[](#pass)

[![drupal-quality-checker-pass](./docs/images/drupal-quality-checker-pass.png)](./docs/images/drupal-quality-checker-pass.png)

### Fail

[](#fail)

[![drupal-quality-checker-fail](./docs/images/drupal-quality-checker-fail.png)](./docs/images/drupal-quality-checker-fail.png)

Demo
----

[](#demo)

Implemented in [Modal Configuration](https://github.com/vijaycs85/modal_config) module.

###  Health Score

15

—

LowBetter than 3% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity3

Limited adoption so far

Community13

Small or concentrated contributor base

Maturity25

Early-stage or recently created project

 Bus Factor1

Top contributor holds 71.7% 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.

### Community

Maintainers

![](https://www.gravatar.com/avatar/17a5688698076a7483188cb84bc3dc53681473a092cf202d0af27001d3329752?d=identicon)[gdionisio](/maintainers/gdionisio)

---

Top Contributors

[![vijaycs85](https://avatars.githubusercontent.com/u/1220029?v=4)](https://github.com/vijaycs85 "vijaycs85 (43 commits)")[![truls1502](https://avatars.githubusercontent.com/u/913581?v=4)](https://github.com/truls1502 "truls1502 (6 commits)")[![gugamd93](https://avatars.githubusercontent.com/u/12204898?v=4)](https://github.com/gugamd93 "gugamd93 (4 commits)")[![hussainweb](https://avatars.githubusercontent.com/u/1040271?v=4)](https://github.com/hussainweb "hussainweb (2 commits)")[![alexpott](https://avatars.githubusercontent.com/u/769634?v=4)](https://github.com/alexpott "alexpott (2 commits)")[![Judapriest](https://avatars.githubusercontent.com/u/4941691?v=4)](https://github.com/Judapriest "Judapriest (1 commits)")[![gugerard](https://avatars.githubusercontent.com/u/1931900?v=4)](https://github.com/gugerard "gugerard (1 commits)")[![dawehner](https://avatars.githubusercontent.com/u/29678?v=4)](https://github.com/dawehner "dawehner (1 commits)")

### Embed Badge

![Health badge](/badges/gugamd93-drupal-quality-checker/health.svg)

```
[![Health](https://phpackages.com/badges/gugamd93-drupal-quality-checker/health.svg)](https://phpackages.com/packages/gugamd93-drupal-quality-checker)
```

###  Alternatives

[phpspec/prophecy

Highly opinionated mocking framework for PHP 5.3+

8.5k551.7M678](/packages/phpspec-prophecy)[vimeo/psalm

A static analysis tool for finding errors in PHP applications

5.8k77.5M6.7k](/packages/vimeo-psalm)[brianium/paratest

Parallel testing for PHP

2.5k118.8M753](/packages/brianium-paratest)[beberlei/assert

Thin assertion library for input validation in business models.

2.4k96.9M570](/packages/beberlei-assert)[mikey179/vfsstream

Virtual file system to mock the real file system in unit tests.

1.4k108.0M2.7k](/packages/mikey179-vfsstream)[orchestra/testbench

Laravel Testing Helper for Packages Development

2.2k39.1M32.0k](/packages/orchestra-testbench)

PHPackages © 2026

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