SonarQube Client Go
Production-ready Go SDK and CLI for SonarQube, with strong API coverage, safer typing, and reliable input validation.
Origin Story: Rescuing a Broken SDK
This project began with a fork of a stalled SonarQube SDK that relied heavily on generated code. In practice, that approach produced fragile behavior and inconsistent typing. I took ownership of the codebase and rebuilt it into a toolchain that teams could safely use in production.
Rebuild Strategy
Instead of patching generated output, I switched to manual implementation and verification:
- Reworked service clients and request/response models by hand.
- Tightened typing and option structures for safer usage patterns.
- Added explicit input validation to prevent ambiguous or invalid API calls.
- Kept package boundaries clean so contributors can extend features without regressions.
What the Project Delivers Today
- Production-grade Go SDK coverage across 50+ services.
- 100% of the SonarQube API surface is covered by the SDK.
- 95%+ code coverage on the codebase.
- 80%+ real end-to-end coverage through integration-style execution paths.
- A full CLI (
sonar-cli) for automation workflows and CI usage. - Stronger behavioral reliability through deeper tests and safer inputs.
- Ongoing releases driven by a maintained roadmap, not reactive issue churn.
How I Run Delivery
I execute through milestone tracks to keep parallel progress on capability and quality:
- E2E Tests Framework
- API V2 Support
- CLI Support
- User Production Readiness
Execution snapshot at capture time:
- 83 closed pull requests
- 109 closed issues
- 100% SonarQube API coverage in the SDK
- 95%+ code coverage
- 80%+ end-to-end coverage
Community Signals
Star History
Contributors
Technologies Used
| Icon | Technology | How it was used |
|---|---|---|
| Go | Core SDK and CLI implementation, typed models, validation, and tests | |
| SonarQube Web API | API surface modeled and implemented in the client for SDK and CLI features |
Project History
Project Rescue and Technical Reset
Took over a fork of a dead SDK project that relied on OpenAPI-driven generation. The generated output was frequently invalid and unsafe in practice, so I replaced that direction with a manual, correctness-first implementation strategy.
Manual Reimplementation with Type and Input Safety
Reworked services, request/response types, and option structs by hand. Added stronger input safety and validation patterns to prevent malformed usage and ambiguous API behavior.
Full SDK + CLI Productization
Expanded coverage to 50+ services and shipped a production-grade CLI (`sonar-cli`) on top of the SDK. Added consistent UX features like pagination control, structured outputs, and flexible authentication.
Milestone-Driven Delivery and Quality Hardening
Ran delivery through milestone tracks (E2E Tests Framework, API V2 Support, CLI Support, User Production Readiness), while pushing deep test coverage, release discipline, and maintainability improvements.
