codacy / codacy-coverage-reporter

Multi-language coverage reporter for Codacy
https://www.codacy.com
Other
134 stars 94 forks source link

[TCE-1009] Allow uploading Codacy native coverage report #506

Open mrazauskas opened 3 months ago

mrazauskas commented 3 months ago

This is a feature request. Would it be possible to allow uploading Codacy native coverage report file directly instead of parsing it from lcov or similar? (That would be JSON file with CoverageReportFile or similar object.)

Real world use case

monocart-coverage-reports is a new tool which generates coverage reports for JavaScript. It processes native V8 reports directly instead of converting them to Istanbul or so. They create coverage data object for each file, with lines map of the following shape:

{
  "1": 1,
  "3": 1,
  "10": 5,
  "35": 1,
}

This means that lcov is a redundant intermediate format and it would be trivial to provide native coverage report file for Codacy. Which means increase of performance and precision.

Example

Codecov supports uploading reports in their native format: https://docs.codecov.com/docs/codecov-custom-coverage-format. And here is how monocart generates it: https://github.com/cenfun/monocart-coverage-reports/blob/5dbff72f1cc4e41d6d77f01e7ac54058ce92aa01/lib/generate.js#L263-L283

That’s straight forward solution. Much more simple than encoding and decoding lcov.

github-actions[bot] commented 3 months ago

Internal ticket created : TCE-1009

mrazauskas commented 3 months ago

The latest version of monocart-coverage-reports shipped with builtin Codacy native coverage reporter. See the release notes: https://github.com/cenfun/monocart-coverage-reports/releases/tag/2.8.7

In one project I am using the reporter and I am uploading the report via the api endpoint. Here is the script: https://github.com/tstyche/tstyche/blob/main/scripts/upload-coverage.js

All works fine. Only problem is that I have to copy the script to each of my projects. Or I could publish it as an npm package or GitHub Action. Actually codacy-coverage-reporter can do this job (and already is doing it internally!). So that feels like unnecessary duplication.

Do you consider making it possible to upload Codacy native coverage reports?