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.
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.
Re-scan, then triage the remaining our-code smells (primarily typescript:S3776, S4123, S3735, S2004, S1186) into focused per-area PRs.
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`)._
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.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Tracking epic for
learn.spikersoft.comMAINTAINABILITY 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)
javascript:S3504var→let/const— overwhelmingly in vendored/generated assets (blinkenlib.js, voxel-game). Best handled via SonarQube exclusions, not hand edits.typescript:S3776javascript:S7767Math.truncvs bit-ops — mostly vendored.javascript:S3776typescript:S4123awaiton non-promise.typescript:S3735voidoperator misuse.javascript:S2004typescript:S1186typescript:S7059Plan
long.js, wasm-voxel vendored) soS3504/S7767noise drops out — this likely removes the large majority.typescript:S3776,S4123,S3735,S2004,S1186) into focused per-area PRs.Counts are from the first 500 of 1,675; full per-rule totals available from SonarQube (
learn.spikersoft.com).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 theS3504/S7767noise.Next (ticket stays open):
learn.spikersoft.comand confirm the HIGH/BLOCKER count after exclusions.typescript:S3776,S4123,S3735,S2004,S1186) into focused per-area PRs.