PHPMD - PHP Mess Detector


CI Integration

PHPMD can be integrated into continuous integration (CI) pipelines to verify that each code change conforms to the configured rules.

GitHub Actions

GitHub Actions is supported out of the box with its own PHPMD renderer called github. This renderer will add annotations directly to your commits and pull requests right in the code.

A simple GitHub Actions workflow could look like this: :

name: CI

on: push

jobs:
  phpmd:
    name: PHPMD
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v2

      - name: Setup PHP environment
        uses: shivammathur/setup-php@v2
        with:
          coverage: none
          tools: phpmd

      - name: Run PHPMD
        run: phpmd . github phpmd.ruleset.xml --exclude 'tests/*,vendor/*'

This assumes that you have a custom rule set in the file phpmd.ruleset.xml. Alternatively, you can of course list the rule sets manually.

GitLab Code Quality Reporting

GitLab Code Quality reporting is supported out of the box with its own PHPMD renderer called gitlab. You can read the GitLab docs about this topic here.

A simple GitLab Code Quality report workflow could look like this: :

mess_detection:
    image: ubuntu-latest
    stage: quality
    script:
      - phpmd . gitlab phpmd.ruleset.xml > phpmd-report.json
    artifacts:
      reports:
        codequality: phpmd-report.json
Source | Edit