PHPackages                             johnatas-x/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. johnatas-x/drupal-quality-checker

Abandoned → [johnatas-x/angry-bearded](/?search=johnatas-x%2Fangry-bearded)ArchivedProject[Testing &amp; Quality](/categories/testing)

johnatas-x/drupal-quality-checker
=================================

Code quality checking tools for Drupal 9 project.

2.0.0(2y ago)11.4kproprietary

Since Feb 18Pushed 2y agoCompare

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

READMEChangelog (6)Dependencies (14)Versions (6)Used By (0)

> ⚠️⚠️⚠️⚠️⚠️
>
> **This project is deprecated and obsolete.**
>
> The baseline is too soft, prefer the use of this tool: [Angry bearded](https://github.com/johnatas-x/angry-bearded) by adapting the rules to your needs.
>
> This project is based on [axelerant](https://packagist.org/packages/axelerant/drupal-quality-checker) and [vijaycs85](https://packagist.org/packages/vijaycs85/drupal-quality-checker) and the last version

Package for Drupal Code Quality presets
=======================================

[](#package-for-drupal-code-quality-presets)

This has been customised from [axelerant/drupal-quality-checker](https://packagist.org/packages/axelerant/drupal-quality-checker) which has been customised from [vijaycs85/drupal-quality-checker](https://packagist.org/packages/vijaycs85/drupal-quality-checker). The goal is to have the initial project up to date while taking advantage of Axelerant's improvements. In order to be as global as possible, the Axelerant's logo has been replaced by Drupal's logo (from the initial project).

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

[](#installation)

*Upgrading from Beta 8?* Read [the instructions for changes](#upgrading-from-beta-8) you need to make to grumphp.yml.dist.

### When using drupal/core-composer-scaffold (recommended)

[](#when-using-drupalcore-composer-scaffold-recommended)

In most cases, you would already be using the [`drupal/core-composer-scaffold`](https://packagist.org/packages/drupal/core-composer-scaffold) package if you have set up using the latest Drupal templates. This package uses `core-composer-scaffold` to set up configuration files in your project. To make this work, add this package name in your composer's `extra.drupal-scaffold.allowed-packages` section.

```
 "name": "my/project",
  ...
  "extra": {
    "drupal-scaffold": {
      "allowed-packages": [
        "johnatas-x/drupal-quality-checker"
      ],
      ...
    }
  }
```

Now, run `composer require` to include the package in your application. Since the package is now allowed, the `core-composer-scaffold` package will copy the configuration files.

See [More about scaffolding](#more-about-scaffolding) for more details.

### Without drupal/core-composer-scaffold

[](#without-drupalcore-composer-scaffold)

If you're not using the scaffolding plugin, the package won't copy the configuration files as expected.

First, run `composer require` to include the package in your application.

```
composer require --dev johnatas-x/drupal-quality-checker
```

If you don't already have a `grumphp.yml` file in your project, GrumPHP would ask you to create one. Answer "No" to the prompt.

Then, copy all the `*.dist` from the library to your project root. The files copied are:

- grumphp.yml.dist
- phpcs.xml.dist
- phpmd.xml.dist

```
cp vendor/johnatas-x/drupal-quality-checker/*.dist .
```

Usage
-----

[](#usage)

No additional steps required, but if git hooks aren't fired, run `php ./vendor/bin/grumphp git:init`. For additional commands, look at [grumhp's documentation](https://github.com/phpro/grumphp/blob/master/doc/commands.md).

Customising
-----------

[](#customising)

Almost all customising begins with first copying the `grumphp.yml.dist` file to your project. Make sure you have the file.

### Adding tasks

[](#adding-tasks)

There are various tasks you can add and customise in your grumphp.yml. Read the [online documentation for GrumPHP tasks](https://github.com/phpro/grumphp/blob/master/doc/tasks.md) to see the tasks you can use and configure.

### Forcing commit message format

[](#forcing-commit-message-format)

To configure commit message structure, use the [git\_commit\_message task](https://github.com/phpro/grumphp/blob/master/doc/tasks/git_commit_message.md). For example, to enforce the commit message contains the Jira issue ID, use the rule as the following snippet. More options are [documented online](https://github.com/phpro/grumphp/blob/master/doc/tasks/git_commit_message.md).

```
# grumphp.yml
grumphp:
  tasks:
    git_commit_message:
      matchers:
        Must contain issue number: /JIRA-\d+/
```

### Disable commit banners

[](#disable-commit-banners)

GrumPHP supports banners to celebrate (or scold) on your commit. This is fun but it is possible it gets on your nerves. If you don’t want it, edit the grumphp.yml file and replace the following parameters:

```
# grumphp.yml
grumphp:
    ascii: ~
```

You could even disable specific ones like this:

```
# grumphp.yml
grumphp:
    ascii:
        succeeded: ~
```

### Overwrite phpmd ruleset

[](#overwrite-phpmd-ruleset)

Copy the ruleset to the project root first

```
cp vendor/johnatas-x/drupal-quality-checker/phpmd.xml.dist phpmd.xml
```

Edit it as per your needs and commit. Remember to modify the grumphp.yml file with the new path.

```
# grumphp.yml
grumphp:
  tasks:
    phpmd:
      ruleset: ['phpmd.xml']
```

### Customise phpcs rules

[](#customise-phpcs-rules)

Copy the ruleset to the project root first

```
cp vendor/johnatas-x/drupal-quality-checker/phpcs.xml.dist phpcs.xml
```

Edit it as per your needs and commit. Remember to modify the grumphp.yml file with the new path.

```
# grumphp.yml
grumphp:
  tasks:
    phpcs:
      standard: ['phpcs.xml']
```

### Customise phpstan parameters

[](#customise-phpstan-parameters)

Copy the ruleset to the project root first

```
cp vendor/johnatas-x/drupal-quality-checker/phpstan.neon.dist phpstan.neon
```

Edit it as per your needs and commit.

More about scaffolding
----------------------

[](#more-about-scaffolding)

As described before, this package uses [`drupal/core-composer-scaffold`](https://github.com/drupal/core-composer-scaffold) plugin to scaffold a few files to the project root. This is not required but there is a good chance you are already using it if you're building a Drupal site.

The scaffolding operation runs with every composer operation and overwrites files. Only the file `grumphp.yml.dist` is not overwritten during subsequent operations. If you are customising any of the other configuration files and don't want the updates to overwrite your changes, you can override the behaviour in your composer.json file. For example, to skip `phpmd.xml.dist` from being overwritten, add this to your `composer.json`:

```
  "name": "my/project",
  ...
  "extra": {
    "drupal-scaffold": {
      "file-mapping": {
        "[project-root]/phpmd.xml.dist": false
      }
    }
  }
```

For more details, read the ["Excluding Scaffold files"](https://github.com/drupal/core-composer-scaffold#excluding-scaffold-files) section of the [documentation](https://github.com/drupal/core-composer-scaffold/blob/8.8.x/README.md) for the core-composer-scaffold plugin.

Upgrading from Beta 8
---------------------

[](#upgrading-from-beta-8)

GrumPHP 0.19 introduced [a breaking change](https://github.com/phpro/grumphp/releases/tag/v0.19.0) to the structure of the YAML file. The template in this repository is updated as per the new structure. However, you would need to change the YML files on your projects before you update to Beta 9 or later.

Fortunately, the change is simple and in many cases would only require a one line change. Rename the `parameters` section to `grumphp`. Our default template contains two parameters which still need to remain under `parameters`. They are `git_dir` and `bin_dir`. Look at [the diff of the change](https://github.com/johnatas-x/drupal-quality-checker/commit/e8d9414ce6ea046b0386115764db68e5251d8a58#diff-94c8df1b4af91d80f7417cad14bbe0e5) to understand what needs to be changed in your grumphp.yml file. Also, read more at the [release page for GrumPHP 0.19](https://github.com/phpro/grumphp/releases/tag/v0.19.0).

Lastly, you can [watch this video](https://youtu.be/XoFJfBcZF58) where I upgrade this on a project. Link:

###  Health Score

27

—

LowBetter than 49% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity16

Limited adoption so far

Community14

Small or concentrated contributor base

Maturity49

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 65.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 ~35 days

Recently: every ~44 days

Total

6

Last Release

999d ago

Major Versions

1.6.1 → 2.0.02023-08-14

### Community

Maintainers

![](https://www.gravatar.com/avatar/fb82429ffeb7556ffee9014525e0ba5d3a32cf3a525d6a5e48135ccd50626925?d=identicon)[johnatas-x](/maintainers/johnatas-x)

---

Top Contributors

[![hussainweb](https://avatars.githubusercontent.com/u/1040271?v=4)](https://github.com/hussainweb "hussainweb (48 commits)")[![johnatas-x](https://avatars.githubusercontent.com/u/34005481?v=4)](https://github.com/johnatas-x "johnatas-x (16 commits)")[![sbrindle](https://avatars.githubusercontent.com/u/25477746?v=4)](https://github.com/sbrindle "sbrindle (2 commits)")[![mohit-rocks](https://avatars.githubusercontent.com/u/2618452?v=4)](https://github.com/mohit-rocks "mohit-rocks (1 commits)")[![skippednote](https://avatars.githubusercontent.com/u/2114712?v=4)](https://github.com/skippednote "skippednote (1 commits)")[![vishalkhode1](https://avatars.githubusercontent.com/u/81069167?v=4)](https://github.com/vishalkhode1 "vishalkhode1 (1 commits)")[![bthirietcap](https://avatars.githubusercontent.com/u/33827005?v=4)](https://github.com/bthirietcap "bthirietcap (1 commits)")[![woredeyonas](https://avatars.githubusercontent.com/u/37066614?v=4)](https://github.com/woredeyonas "woredeyonas (1 commits)")[![happy047](https://avatars.githubusercontent.com/u/55045861?v=4)](https://github.com/happy047 "happy047 (1 commits)")[![jashish24](https://avatars.githubusercontent.com/u/32076806?v=4)](https://github.com/jashish24 "jashish24 (1 commits)")

### Embed Badge

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

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

###  Alternatives

[axelerant/drupal-quality-checker

Code quality checking tools for Drupal project.

13197.9k1](/packages/axelerant-drupal-quality-checker)[wp-cli/wp-cli-tests

WP-CLI testing framework

422.7M87](/packages/wp-cli-wp-cli-tests)[drupal/core-dev

require-dev dependencies from drupal/drupal; use in addition to drupal/core-recommended to run tests from drupal/core.

2021.0M276](/packages/drupal-core-dev)[youwe/testing-suite

Contains Youwe's default testing packages for php.

13176.9k8](/packages/youwe-testing-suite)[acquia/orca

A tool for testing a company's software packages together in the context of a realistic, functioning, best practices Drupal build

32902.4k](/packages/acquia-orca)[chromatic/usher

A collection of Robo commands for use on Chromatic projects.

13534.3k1](/packages/chromatic-usher)

PHPackages © 2026

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