[Tech debt][Epic] SonarQube: frontend HIGH/BLOCKER maintainability smells (~1,675) #250

Open
opened 2026-06-19 18:45:24 +00:00 by spikerj · 1 comment
Owner

Tracking epic for learn.spikersoft.com MAINTAINABILITY smells at HIGH/BLOCKER severity. Total 1,675 OPEN (vs ~2,531 more at MEDIUM). Too many to fix at once; this epic tracks the cleanup and will be split into focused PRs/sub-tickets.

Top rules (sample of first 500)

Rule ~Count Note
javascript:S3504 402 varlet/const — overwhelmingly in vendored/generated assets (blinkenlib.js, voxel-game). Best handled via SonarQube exclusions, not hand edits.
typescript:S3776 28+ Cognitive complexity > 15 in our TS — real refactor targets.
javascript:S7767 18 Math.trunc vs bit-ops — mostly vendored.
javascript:S3776 10 Complexity in generated/vendored JS.
typescript:S4123 7 await on non-promise.
typescript:S3735 7 void operator misuse.
javascript:S2004 7 Functions nested too deeply.
typescript:S1186 5 Empty method bodies.
typescript:S7059 4 async-in-constructor (see #242).

Plan

  1. Add SonarQube exclusions for vendored/generated assets (blinkenlib.js, voxel-game long.js, wasm-voxel vendored) so S3504/S7767 noise drops out — this likely removes the large majority.
  2. Re-scan, then triage the remaining our-code smells (primarily typescript:S3776, S4123, S3735, S2004, S1186) into focused per-area PRs.
  3. Close this epic once HIGH/BLOCKER is back to a clean gate.

Counts are from the first 500 of 1,675; full per-rule totals available from SonarQube (learn.spikersoft.com).

Tracking epic for `learn.spikersoft.com` MAINTAINABILITY smells at HIGH/BLOCKER severity. Total **1,675** OPEN (vs ~2,531 more at MEDIUM). Too many to fix at once; this epic tracks the cleanup and will be split into focused PRs/sub-tickets. ## Top rules (sample of first 500) | Rule | ~Count | Note | |---|---|---| | `javascript:S3504` | 402 | `var` → `let`/`const` — overwhelmingly in **vendored/generated assets** (blinkenlib.js, voxel-game). Best handled via SonarQube exclusions, not hand edits. | | `typescript:S3776` | 28+ | Cognitive complexity > 15 in **our** TS — real refactor targets. | | `javascript:S7767` | 18 | `Math.trunc` vs bit-ops — mostly vendored. | | `javascript:S3776` | 10 | Complexity in generated/vendored JS. | | `typescript:S4123` | 7 | `await` on non-promise. | | `typescript:S3735` | 7 | `void` operator misuse. | | `javascript:S2004` | 7 | Functions nested too deeply. | | `typescript:S1186` | 5 | Empty method bodies. | | `typescript:S7059` | 4 | async-in-constructor (see #242). | ## Plan 1. Add SonarQube exclusions for vendored/generated assets (blinkenlib.js, voxel-game `long.js`, wasm-voxel vendored) so `S3504`/`S7767` noise drops out — this likely removes the large majority. 2. Re-scan, then triage the remaining **our-code** smells (primarily `typescript:S3776`, `S4123`, `S3735`, `S2004`, `S1186`) into focused per-area PRs. 3. Close this epic once HIGH/BLOCKER is back to a clean gate. _Counts are from the first 500 of 1,675; full per-rule totals available from SonarQube (`learn.spikersoft.com`)._
spikerj added the sonarqube label 2026-06-19 18:45:24 +00:00
Author
Owner

Step 1 done in spikersoft-angular PR #73 (merged to master): added SonarQube exclusions for vendored/generated assets — assets/x86-playground/blinkenlib.js (Emscripten), assets/voxel-game/** (ported JS), wasm-voxel/ts/libraries/long.ts (Long.js port). This should drop the bulk of the S3504/S7767 noise.

Next (ticket stays open):

  • Re-scan learn.spikersoft.com and confirm the HIGH/BLOCKER count after exclusions.
  • Triage the remaining our-code smells (primarily typescript:S3776, S4123, S3735, S2004, S1186) into focused per-area PRs.
Step 1 done in spikersoft-angular PR #73 (merged to `master`): added SonarQube exclusions for vendored/generated assets — `assets/x86-playground/blinkenlib.js` (Emscripten), `assets/voxel-game/**` (ported JS), `wasm-voxel/ts/libraries/long.ts` (Long.js port). This should drop the bulk of the `S3504`/`S7767` noise. Next (ticket stays open): - [ ] Re-scan `learn.spikersoft.com` and confirm the HIGH/BLOCKER count after exclusions. - [ ] Triage the remaining our-code smells (primarily `typescript:S3776`, `S4123`, `S3735`, `S2004`, `S1186`) into focused per-area PRs.
Sign in to join this conversation.