CollectorUI is a cross‑platform desktop application (Windows, macOS, and Linux) built with .NET 10 and C# 14. It simplifies generating and viewing code coverage reports by converting raw coverage outputs into readable HTML via ReportGenerator.
- Coverage report generation (e.g., Cobertura) to HTML using ReportGenerator.
- Simple UI to select a solution and test projects.
- Hierarchical namespace TreeView with:
- Namespace selection via checkboxes.
- Instant text filtering (matches nodes or any of their descendants).
- Expansion state preservation when filtering and updating.
- Local persistence (SQLite + EF Core):
- Saves per solution/project the deselected namespaces (default is selected).
- Saves window size on close and restores it on next launch.
- Open the generated HTML report directly from the app.
- .NET 10.0
- C# 14.0
- Avalonia UI (cross‑platform desktop)
- SQLite + EF Core (lightweight local persistence)
- ReportGenerator (coverage to HTML conversion)
- .NET 10 SDK
- Your preferred IDE (Rider, Visual Studio, VS Code)
- Optional: ReportGenerator installed as a .NET global tool (the app will attempt to install it if needed)
dotnet tool install --global dotnet-reportgenerator-globaltool
-
Clone the repository
git clone https://github.com/archteck/CollectorUI.git cd CollectorUI -
Restore dependencies
dotnet restore
-
Build and run
dotnet build dotnet run
(You can also launch directly from your IDE.)
-
Select a solution (.slnx)
- Click “Select Solution” and point to a
.slnxfile. - The app detects and lists test projects.
- Click “Select Solution” and point to a
-
Choose projects
- Use “Select All” / “Unselect All” as needed.
- Each tab represents one test project.
-
Explore namespaces
- The namespace TreeView shows the hierarchy for the project (or dependencies when applicable).
- Check/uncheck nodes to include/exclude areas in the report.
- Use the text filter to search by namespace name. Nodes that match (or have matching descendants) remain visible.
- Expansion state is preserved; with an active filter, relevant nodes are expanded to reveal matches.
-
Generate a report
- Click “Generate Report”.
- When completed, the “Open Report” button becomes available per project; click to open the HTML report in your browser.
-
Automatic persistence
- When a report is generated, the project’s deselected namespaces are saved per solution/project.
- Reopening the same solution restores those deselections (default is selected if no record exists).
- On app close, the window size is saved and restored on next launch.
- A SQLite database is created under the user’s local application data folder, in a directory named “CollectorUI”:
- Database file:
collectorui.sqlite
- Database file:
- The schema includes:
- A table for namespace selections per solution/project (stores deselections).
- An app settings table (e.g.,
Window.Width,Window.Height).
-
ReportGenerator
- If generation fails due to a missing tool, install it manually:
dotnet tool install --global dotnet-reportgenerator-globaltool
- Docs and usage: https://reportgenerator.io/
- If generation fails due to a missing tool, install it manually:
-
Filter shows no results
- Check the search text (case‑insensitive).
- Clear the filter to return to the full view.
-
Unexpected window size
- A minimum size (600x600) is enforced for UX.
- If closing while maximized, the last “Normal” size is saved and restored.
Contributions are welcome!
- Fork the repository.
- Create a feature branch.
- Implement changes with tests where applicable.
- Submit a Pull Request with a clear description of the goal and approach.
- CollectorUI is licensed under the MIT License. See the LICENSE file.
- ReportGenerator is a third‑party project by Daniel Palme (separate license).
- Ownership and attribution: CollectorUI is not affiliated with or endorsed by ReportGenerator or its authors. “ReportGenerator” is a third‑party project by Daniel Palme [3].
- Legality of usage: Installing and invoking ReportGenerator as a global .NET tool from your development environment or CI is permitted under its open‑source license. You should comply with ReportGenerator’s licensing terms (Apache License) when redistributing or bundling it; simply using it as an external tool (installed from NuGet) is a typical and permitted usage [1] [2].
- This repository does not claim ownership of ReportGenerator and does not redistribute its binaries; it instructs users to install the tool from official sources.
- ReportGenerator by Daniel Palme: https://github.com/danielpalme/ReportGenerator
- The .NET and open‑source community.