Appearance
Automatizované metriky kvality kódu — statická analýza (SonarCloud), kontrola kvality balíčků a konzistence generovaných artefaktů. Pokrytí testy má vlastní stránku: Pokrytí testy (coverage).
📊 Skóre
| Stav | Počet |
|---|---|
| 🟢 OK | 5 |
| 🟠 Částečně | 2 |
| 🔴 Špatně | 2 |
Celkově: silný, vyzrálý základ — SonarCloud, ESLint se SonarJS, Prettier, kontrola licencí i „drift" gaty jsou zavedené a běží v CI. Hlavní mezery jsou v nevynuceném Sonar gate (allow_failure), skenování zranitelností jen naplánovaně a v pár chybějících nástrojích (knip, commitlint).
🔍 Co jsme hodnotili
| # | Položka | Stav |
|---|---|---|
| 1 | Statická analýza kvality kódu (SonarCloud) | 🟢 |
| 2 | Lint + formátování (ESLint / SonarJS / Prettier) | 🟢 |
| 3 | Kontrola licencí závislostí | 🟢 |
| 4 | Konzistence generovaných artefaktů (drift gaty) | 🟢 |
| 5 | Pre-commit / pre-push kontroly (husky, lint-staged) | 🟢 |
| 6 | Vynucení hranic mezi moduly (import boundaries) | 🟠 |
| 7 | Audit zranitelností závislostí | 🟠 |
| 8 | Kontrola nepoužívaného kódu (knip) | 🔴 |
| 9 | Vynucení konvence commit zpráv (commitlint) | 🔴 |
📈 Metriky ze SonarCloudu
Reálné hodnoty z dashboardu (agregace za projekt, 13 aplikací):
| Metrika | Hodnota |
|---|---|
| Maintainability | 🟢 A |
| Reliability | 🟠 B |
| Security | 🟠 B |
| Technický dluh (ratio) | 0,04 % (≈ 5 d 6 h) |
| Blocker / Critical issues | 0 / 26 |
| Major / Minor issues | 81 / 241 |
| Coverage | 84,8 % → detail |
⚠️ Maintainability je napříč službami A, ale Reliability a Security jsou jen B a u řady jednotlivých služeb je Security rating C (
tf-adm,tf-ass,tf-fis,tf-fns,tf-hub-client,tf-nos,tf-tis). 26 „critical" nálezů stojí za cílené řešení.
📌 Klíčové nálezy
🟢 SonarCloud napříč službami
Statická analýza je nakonfigurována pro 13 aplikací — každá má vlastní sonar-project.properties a samostatný projekt v organizaci techfides (např. apps/tf-agw/sonar-project.properties). Sken běží v CI jako samostatný job (sonarsource/sonar-scanner-cli) a v merge requestech čeká na quality gate. Přes quality gate se hlídá i pokrytí testy. README obsahuje přehledovou tabulku s badge (Coverage, Code Smells, Reliability, Security, Technical Debt) pro všechny služby.
⚠️ Dílčí nález: Sonar job má
allow_failure: true— quality gate tedy neblokuje pipeline (nález i selhání gate prochází dál). Sonar konfiguraci nemá jediný modultf-des, který stojí mimo těchto 13 aplikací.
🟢 Lint a formátování se sdílenou konfigurací
Existuje sdílený balík @tfpl/eslint-config (flat config, ESLint 10 + typescript-eslint 8) s plug-iny SonarJS, unicorn a prefer-arrow-functions. Prettier je jednotný (.prettierrc.json, printWidth: 120). Lint běží v CI (lint:eslint, lint:typescript, format:check) a lokálně přes husky.
⚠️ SonarJS pravidla jsou zatím záměrně jen jako
warn(„phase-1 strategy" — komentář vpackages/eslint-config/src/base.ts), tedy nelámou build. Je to vědomé, dočasné rozhodnutí, ne opomenutí.
🟢 Kontrola licencí a konzistence artefaktů
Balík @tfpl/licence-checker-config vynucuje allowlist ~34 povolených licencí a běží v CI u všech 13 aplikací (lint:licence). Navíc jsou zavedené dvě „drift" gaty: api:spec-drift (kontroluje, že OpenAPI specifikace odpovídají kódu) a packages:dist-drift (kontroluje, že sestavené balíčky odpovídají zdrojům). To je nadstandardní ochrana proti tichému rozjetí generovaného a zdrojového kódu.
🟠 Audit zranitelností jen v naplánovaném běhu
pnpm audit (--audit-level=high) je zapojen jako CI job report:audit, ale běží jen ve scheduled pipeline na větvi develop, ne u každého merge requestu — nové zranitelné závislosti se tak zachytí se zpožděním.
🔴 Chybí kontrola nepoužívaného kódu a konvence commitů
V projektu není knip (ani jiný nástroj na mrtvý kód / nepoužívané exporty) a chybí commitlint + commit-msg hook, přestože git konvence jsou v dokumentaci popsané.
✅ Doporučení
| Priorita | Doporučení |
|---|---|
| Vysoká | Zvážit odebrání allow_failure u Sonar gate na chráněných větvích, aby quality gate reálně blokoval. |
| Vysoká | Zapojit report:audit (zranitelnosti) do každého merge requestu, ne jen do scheduled běhu. |
| Střední | Zaměřit se na služby se Security ratingem C a na 26 „critical" nálezů. |
| Střední | Postupně zpřísnit SonarJS pravidla z warn na error a doplnit knip + commitlint. |
| Nízká | Doplnit Sonar konfiguraci pro tf-des. |