Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Coverage Laravel Package

codacy/coverage

Deprecated PHP coverage reporter that sends PHPUnit coverage results (Clover XML, or PHPUnit XML for PHPUnit <4) to your Codacy dashboard. No longer maintained; use the codacy-coverage-reporter instead.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit

  • codacy/coverage is a thin, single-purpose CLI phar that parses a Clover (or legacy PHPUnit XML) report and POSTs it to the Codacy coverage API using a project token and commit identifier. It is not a library, has no Laravel service provider, facade, config file, or Artisan integration — it sits entirely outside the application runtime and only touches the CI pipeline.
  • Consequently it "fits" any Laravel stack trivially in the sense that it adds no framework coupling. That is also the extent of the fit: it solves one narrow CI concern and provides no value to the application itself.
  • The package's supported envelope (PHP 5.3+, PHPUnit <4 XML format as a secondary input) is misaligned with any supported Laravel release. Laravel 9+ requires PHP 8.0+, and Laravel 10/11 require PHP 8.1/8.2 with PHPUnit 10/11 or Pest 2/3. The tool may still run on PHP 8.x for Clover-only ingestion, but that is untested and unsupported by the maintainer.
  • The repository is archived and explicitly deprecated (last release 2020-01-10, 45 stars, zero dependents). The upstream vendor's own guidance is to replace it with codacy-coverage-reporter. This is a terminal-state artifact, not a component to build on.

Integration feasibility

  • Mechanically simple: add to require-dev, emit Clover from PHPUnit (--coverage-clover build/logs/clover.xml or the <coverage><report><clover/></report></coverage> block in phpunit.xml), then invoke the phar in CI with CODACY_PROJECT_TOKEN and the commit SHA.
  • Real friction points:
    • Installation instructions pin dev-master, which is an unpinned, mutable dependency — unacceptable for reproducible CI in a governed repo.
    • The phar bundles its own dependency tree, so Composer's audit/composer outdated tooling cannot see or patch what is inside it.
    • Parallel test execution (Laravel's php artisan test --parallel, ParaTest) produces multiple coverage artifacts that must be merged before upload; the reporter expects a single file and offers no merge capability.
    • Some CI runners and hardened images restrict phar execution, open_basedir, or outbound egress to api.codacy.com.
  • The Clover format itself is the durable part. That means the exit path is cheap: keep the coverage generation, swap the uploader.

Technical risk

  • Lifecycle risk (high): archived, unmaintained, no security response path, no compatibility guarantees for PHP 8.2/8.3 or future Codacy API changes. Any breakage is permanently ours to fix or fork.
  • Supply-chain risk (medium-high): an abandoned dev-master phar in require-dev is a standing audit finding. Even though dev-only, it executes arbitrary code in CI with access to a project token.
  • API drift risk (medium): the Codacy upload API and authentication model have moved on since 2020; silent behavioral changes would surface as missing or stale coverage rather than as loud errors.
  • Functional risk (low-medium): once a valid Clover file exists, upload is a well-understood operation; failure modes are more likely operational (auth, network, token scope) than logical.
  • Overall: the technical risk isn't in what the code does — it's small and boring — it's in owning an orphaned binary. The score (2.03) and zero dependents are consistent with "do not adopt."

Key questions

  1. Is Codacy coverage a hard requirement (gate, badge, PR delta) or a nice-to-have dashboard? If nice-to-have, deprioritize entirely.
  2. Codacy Cloud or self-hosted? Self-hosted changes the endpoint, the token model, and possibly the reporter compatibility matrix.
  3. What is the CI platform (GitHub Actions, GitLab CI, Jenkins, Bitbucket)? The replacement path differs per platform.
  4. Do we need per-PR coverage deltas and quality gates, or just a trend line? Gates usually argue for a maintained reporter or Sonar.
  5. Are we already paying for Codacy, and is coverage bundled? If coverage isn't in the contract, this whole thread is moot.
  6. Is parallel test execution in use, and who owns coverage merging today?
  7. Is this package already present in any repo (inherited), or is this a greenfield evaluation? The answer flips the work from "evaluate" to "remediate."

Integration Approach

Stack fit

  • Target state for a Laravel repo: PHPUnit/Pest emits Clover; a maintained uploader runs as a post-test CI step. The Laravel side needs no code changes, no service provider, no config publishing.
  • Coverage driver choice matters more than the uploader: PCOV for speed on CI, Xdebug when branch coverage is required. This decision should be made once and standardized across repos.
  • Recommended replacement: Codacy's codacy-coverage-reporter — either the standalone binary/container or the get.sh one-liner (report -r build/logs/clover.xml with CODACY_PROJECT_TOKEN). Container form is preferable in CI because it pins the runtime and avoids host JVM/glibc variance.
  • If Codacy coverage is optional, evaluate Codecov, Coveralls, or SonarQube/SonarCloud as part of the same decision rather than defaulting to Codacy because a deprecated package exists.

Migration path

  1. Inventory: grep composer.json/lock files and CI configs for codacy/coverage and for existing --coverage-clover invocations.
  2. Verify the coverage artifact is produced and non-trivial (a 0% or empty Clover file is a common false negative — confirm with an --min threshold locally).
  3. Stand up the replacement uploader in a single non-critical repo first, using a dedicated CI secret for the project token.
  4. Compare the Codacy dashboard before/after on the same commit to confirm parity of coverage percentage and file mapping.
  5. Remove codacy/coverage from require-dev, run composer update --lock, and confirm no phar remains in vendor/.
  6. Roll out repo-by-repo; keep the old package out of the dependency graph once the new path is green.

Compatibility

  • Modern Laravel is a non-issue for the uploader but a real issue for the legacy PHPUnit XML input: only Clover should be used regardless of which tool is chosen.
  • The replacement reporter is JVM-based or containerized; ensure the CI runner can pull the image or run the binary. If runners are air-gapped, mirror the image into the internal registry and pin by digest.
  • Pin everything: container digest, reporter version, and the CI action version. Do not accept floating tags for a step that holds a write-scoped project token.

Sequencing

  • Do the uploader swap before any coverage-gating initiative. Gating on a pipeline fed by an unmaintained binary creates a single point of failure with no upstream support.
  • If parallel testing adoption is on the roadmap, sequence coverage merging (e.g., a merge step producing one Clover file) ahead of the reporter swap.
  • Treat this as a small, well-bounded CI hygiene task — days, not a project — and staff it accordingly.

Operational Impact

Maintenance

  • Near-zero effort while it works; unbounded effort when it breaks, because there is no upstream to escalate to. The realistic remediation for any failure is "fork and patch a phar" or "replace it," and replacement is almost always cheaper.
  • The dependency is dev-only, so it does not ship to production and does not affect runtime attack surface. It does, however, sit in the CI trust boundary with a token that can write coverage data.
  • Carrying an archived dev-master dependency is a recurring finding in dependency-review and security-review processes; expect to re-justify it every audit cycle until it's removed.

Support

  • No maintainer, no issue triage, no security advisories, no changelog. Internal support burden falls on whoever owns CI.
  • Debugging is opaque: the phar is a black box, so failures present as generic non-zero exits or silent no-ops. Expect to instrument the CI step with -v/set -x and inspect HTTP responses manually.
  • Vendor documentation for the deprecated path is frozen; the current Codacy docs describe only the replacement, which means onboarding engineers will follow docs that don't match the repo.

Scaling

  • Runtime cost is negligible — one short-lived process per pipeline, dominated by network round-trip, not by repository size.
  • Large Clover files (monorepos, big Laravel apps) are the scaling concern: memory limits on the phar and upload payload size. Test against the largest repo before broad rollout.
  • Org-wide scaling is the real problem: N repositories × an unmaintained binary = N independent opportunities to break, with no shared fix. A maintained, containerized reporter gives one pin to bump.

Failure modes

  • Silent success on failure: coverage upload steps are typically non-blocking, so a broken uploader degrades to a stale badge rather than a red build. Coverage silently rots; nobody notices until a gate is introduced.
  • Auth/token failures: expired or mis-scoped project tokens, or the token not being exposed to forked-PR builds (common and usually correct — but it means no coverage on forks).
  • Network/egress: corporate proxies, TLS trust stores, and runners without api.codacy.com egress. Older bundled TLS stacks are more likely to fail against modern endpoints.
  • Phar execution blocked: hardened runners, phar.readonly, open_basedir, or policy-driven binary allowlists.
  • Empty/zeroed Clover: coverage driver not installed or enabled, wrong PHPUnit flag, or parallel runs producing unmerged files — the uploader reports success with 0%.
  • API drift: Codacy changes an endpoint or payload contract; the 2020 client fails in a way that looks like a transient error.

Ramp-up

  • Low for any engineer comfortable with CI: the tool's surface is a single command plus a token.
  • The hidden ramp-up is institutional knowledge — who owns the Codacy integration, where the token lives, why coverage dropped last quarter, and what to do when the phar fails. That knowledge is undocumented because the vendor stopped documenting it.
  • Recommendation: do not onboard new repositories onto this package. For existing usage, schedule replacement within the current quarter — the Clover artifact is the asset worth preserving; the uploader is disposable.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
abbasudo/artisan-route
mirvan/ippanel
ignibyte/aic-framework
glavweb/data-schema-bundle
glavweb/datagrid-bundle
tacticmedia/scim-server
uni-method/frame
neika-ai/sdk
adachsoft/php-code-style
pharaonic/laravel-notification-dependencies
beautinow/translug
dev-brainiac/bot-cloaked
octoberrain/html
octoberrain/extension
octoberrain/exception
octoberrain/contracts
adachsoft/api-version-bundle
cgv/localized-resource
noith/settings
kda/laravel-package