PHPackages                             d0x2f/clover-merge - 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. d0x2f/clover-merge

ActiveProject[Utility &amp; Helpers](/categories/utility)

d0x2f/clover-merge
==================

Merge two or more clover XML files.

v1.0.5(7y ago)9128.0k↓58.7%10[1 issues](https://github.com/d0x2f/CloverMerge/issues)1MITPHP

Since Sep 23Pushed 7y ago2 watchersCompare

[ Source](https://github.com/d0x2f/CloverMerge)[ Packagist](https://packagist.org/packages/d0x2f/clover-merge)[ RSS](/packages/d0x2f-clover-merge/feed)WikiDiscussions master Synced 2d ago

READMEChangelog (6)Dependencies (7)Versions (7)Used By (1)

CloverMerge
===========

[](#clovermerge)

[![Build Status](https://camo.githubusercontent.com/4db4d78e09d57717974771f5c77aea02bdfc529a617482449677fa37fe1e6a57/68747470733a2f2f7472617669732d63692e6f72672f64307832662f436c6f7665724d657267652e7376673f6272616e63683d6d6173746572)](https://travis-ci.org/d0x2f/CloverMerge)[![Coverage Status](https://camo.githubusercontent.com/23f9cddde769a42a8acfe2241f3c3ffada403129e338ce4175f6ea29374505d5/68747470733a2f2f636f766572616c6c732e696f2f7265706f732f6769746875622f64307832662f436c6f7665724d657267652f62616467652e7376673f6272616e63683d6d6173746572)](https://coveralls.io/github/d0x2f/CloverMerge?branch=master)[![Maintainability](https://camo.githubusercontent.com/46e0689b12f2a414f045680706f2456df511c3794e04c247a8f2ae5db60c988c/68747470733a2f2f6170692e636f6465636c696d6174652e636f6d2f76312f6261646765732f37666638363933333936316465343436643539342f6d61696e7461696e6162696c697479)](https://codeclimate.com/github/d0x2f/CloverMerge/maintainability)

PHP utility to merge two or more clover files into a single document.

Intended to be used in a build pipeline to merge clover output from multiple testing frameworks.

I spent a weekend writing this so you don't have to.

Standalone
==========

[](#standalone)

Install
-------

[](#install)

Requires composer.

```
$ git clone https://github.com/d0x2f/CloverMerge.git
$ composer install
```

Run
---

[](#run)

```
$ ./clover-merge -o combined.xml input1.xml input2.xml
Files Discovered: 332
Final Coverage: 14534/14558 (99.84%)
```

As a Composer Dependency
========================

[](#as-a-composer-dependency)

Install
-------

[](#install-1)

In your project root directory:

```
$ composer require d0x2f/clover-merge
```

Run
---

[](#run-1)

```
$ ./vendor/bin/clover-merge -o combined.xml input1.xml input2.xml
Files Discovered: 332
Final Coverage: 14534/14558 (99.84%)
```

As a Docker Image
=================

[](#as-a-docker-image)

Install
-------

[](#install-2)

```
$ docker pull d0x2f/clover-merge
```

Run
---

[](#run-2)

```
$ docker run --rm -v $(pwd):/build clover-merge -o /build/combined.xml /build/input1.xml /build/input2.xml
Files Discovered: 332
Final Coverage: 14534/14558 (99.84%)
```

Usage
=====

[](#usage)

```
usage: clover-merge [] []

OPTIONS
  --enforce, -e   Exit with failure if final coverage is below the given
                  threshold
  --help, -?      Display this help.
  --mode, -m      merge mode: additive, exclusive or inclusive (default)
  --output, -o    output file path

ARGUMENTS
  paths   input file paths

```

Modes
-----

[](#modes)

- Additive - Lines must be present in the first input file for them to be included.
- Exclusive - Lines must be present in all input files for them to be included.
- Inclusive - Lines from all files are included.

###  Health Score

38

—

LowBetter than 83% of packages

Maintenance18

Infrequent updates — may be unmaintained

Popularity40

Moderate usage in the ecosystem

Community14

Small or concentrated contributor base

Maturity66

Established project with proven stability

 Bus Factor1

Top contributor holds 100% 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 ~5 days

Total

6

Last Release

2810d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/ab1534de7148de0c8b92d90d3734bf8ded935d08fa8d7e9590262b52d920ba16?d=identicon)[d0x2f](/maintainers/d0x2f)

---

Top Contributors

[![d0x2f](https://avatars.githubusercontent.com/u/8149130?v=4)](https://github.com/d0x2f "d0x2f (36 commits)")

---

Tags

cloverclover-filescomposer-dependencycoveragedevops-toolsdocker-imagephp

###  Code Quality

Code StylePHP\_CodeSniffer

### Embed Badge

![Health badge](/badges/d0x2f-clover-merge/health.svg)

```
[![Health](https://phpackages.com/badges/d0x2f-clover-merge/health.svg)](https://phpackages.com/packages/d0x2f-clover-merge)
```

###  Alternatives

[ecoapm/libyear

A simple measure of software dependency freshness

28306.2k](/packages/ecoapm-libyear)[malios/php-to-ascii-table

A PHP library to generate plain text tables.

29145.0k6](/packages/malios-php-to-ascii-table)[samsara/fermat

A library providing math and statistics operations for numbers of arbitrary size.

653.1k3](/packages/samsara-fermat)

PHPackages © 2026

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