Skip to content

Improving Multi-Module Project Support for Coverage Reporting #156

@AppOutletTeam

Description

@AppOutletTeam

Hi there,

First off, thank you for creating and maintaining this very useful GitHub Action!

I'm currently integrating qltysh/qlty-action/coverage into a Kotlin multi-module project and have encountered a challenge related to path resolution for the coverage reports.

The Challenge

In our multi-module setup, we use Kover to generate a single, merged XML coverage report. The file paths within this report are relative to their specific module's source directory, not the project root.

This leads to a couple of issues:

  1. If I use the add-prefix parameter pointing to one module's source directory (e.g., composeApp/src/commonMain/kotlin/), the action can't find the source files for any of the other modules.
  2. If I omit the add-prefix parameter, the action is unable to locate any of the source files, as it seems to expect paths relative to the project root.

Current Workaround

The only way I've been able to get this working is by generating separate coverage reports for each module and then running the coverage action multiple times, once for each module, with a unique add-prefix for each.

# In .github/workflows/pull-request.yml

# ...
- name: Upload coverage report for composeApp
  uses: qltysh/qlty-action/coverage@v1.1.1
  with:
    token: ${{ secrets.QLTY_COVERAGE_TOKEN }}
    files: composeApp/build/reports/kover/report.xml
    add-prefix: composeApp/src/commonMain/kotlin/

- name: Upload coverage report for domain
  uses: qltysh/qlty-action/coverage@v1.1.1
  with:
    token: ${{ secrets.QLTY_COVERAGE_TOKEN }}
    files: domain/build/reports/kover/report.xml
    add-prefix: domain/src/commonMain/kotlin/

# ... and so on for every module

While this works, it's a bit cumbersome and requires manual updates to the workflow file every time a new module is added to the project.

Suggested Improvement

It would be a fantastic improvement if the action could process a single, merged coverage report and intelligently resolve the source file paths for all modules within it. This would greatly simplify the CI configuration for developers working with multi-module architectures.

Thank you for considering this feedback. Please let me know if any more details, logs, or examples would be helpful. I'm happy to assist in any way I can.

Keep up the great work

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions