2026-09-30 10:27:14 +01:00
2026-09-29 12:15:51 +01:00
2026-09-30 10:27:14 +01:00
2026-09-29 11:05:59 +01:00
2026-09-29 16:55:12 +01:00
2026-09-29 11:59:34 +01:00
2026-09-30 10:27:14 +01:00
2026-09-30 10:27:14 +01:00
2026-09-29 12:15:51 +01:00

SonarDesk

Native macOS SonarQube dashboard built with SwiftUI.

Open

Open SonarDesk.xcodeproj in Xcode, select your Development Team under Signing & Capabilities, then Run.

First connection

Open SonarDesk > Settings, add your SonarQube Server URL and a SonarQube user token. Tokens are stored in Keychain.

Included

  • Multiple SonarQube servers
  • Keychain token storage
  • Server status/version
  • Project dashboard
  • Quality gate state
  • Bugs, vulnerabilities, smells, coverage, duplication, LOC
  • Project detail
  • Unresolved issue browser/search
  • Sandboxed outgoing networking

v1.2 dashboard improvements

  • Colour-accented interactive dashboard cards.
  • Bugs and Vulnerabilities cards navigate directly to filtered global issues.
  • Failed Gates card filters the dashboard project list to failing quality gates.
  • Projects card restores the complete project list.
  • Dashboard project rows are clickable and open project details.
  • Dashboard project pagination with 10, 25, and 50 rows per page.
  • Existing user-defined sidebar project ordering is preserved by pagination.

v1.3

  • Server-side pagination for All Issues, Bugs, Vulnerabilities and Code Smells (25/50/100 rows).
  • Dedicated issue destinations in the main sidebar.
  • Project metric navigation replaces the old View label/buttons; every metric card has a destination.
  • Professional semantic colour system across dashboard/project metrics.
  • New SonarDesk application icon and branded launch splash.

v2.0.2 branding fix

  • AppIcon is explicitly selected by the target and CFBundleIconName.
  • SonarDeskLogo is bundled as a normal image asset and applied to NSApplication.applicationIconImage at launch, including development runs.
  • Startup now begins on a dedicated branded launch view for at least 1.6 seconds while the initial SonarQube refresh runs, then transitions into the main UI.

v2.1.0 — Direct distribution hardening

  • Hardened Runtime explicitly enabled for Debug and Release.
  • App Sandbox retained with only outbound network access.
  • No hardened-runtime exception entitlements (no JIT, unsigned executable memory, DYLD injection, or disabled library validation).
  • Release builds do not inject Xcode debug entitlements.
  • SonarQube tokens remain in Keychain and are marked ThisDeviceOnly.
  • Networking uses an ephemeral URLSession with no URL cache or cookie store.
  • Production SonarQube endpoints must use HTTPS; plain HTTP is limited to localhost development.
  • Server error response bodies are not surfaced to the UI.
  • Distribution/ExportOptions.plist is included for Developer ID export.
  • Distribution/notarize.sh verifies signing, submits with notarytool, staples the ticket, and runs Gatekeeper assessment.

Direct release workflow

  1. In Xcode, set your Apple Developer Team and ensure a Developer ID Application certificate is available.
  2. Product > Archive.
  3. Organizer > Distribute App > Developer ID / Direct Distribution and export the signed app.
  4. Store notarization credentials once, for example: xcrun notarytool store-credentials SonarDesk-Notary --apple-id YOUR_APPLE_ID --team-id YOUR_TEAM_ID --password YOUR_APP_SPECIFIC_PASSWORD
  5. Run: NOTARY_PROFILE=SonarDesk-Notary ./Distribution/notarize.sh /path/to/SonarDesk.app
  6. Distribute the stapled app in a DMG/ZIP. Do not re-sign or modify the app after notarization.

Before every release, test the exported build on a clean macOS user account and run codesign --verify --deep --strict, spctl --assess --type execute, and xcrun stapler validate.

S
Description
The OSX baed Sonar qube client
Readme
1.9 MiB
Languages
Blade 35.8%
Swift 33.5%
PHP 25.2%
Shell 5.3%
JavaScript 0.1%