Skip to content
PublikovánoAktualizováno: 22. července 2026 v 00:00 Vytvořeno v TechFides

Metriky kvality kódu

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

StavPočet
🟢 OK5
🟠 Čá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žkaStav
1Statická analýza kvality kódu (SonarCloud)🟢
2Lint + formátování (ESLint / SonarJS / Prettier)🟢
3Kontrola licencí závislostí🟢
4Konzistence generovaných artefaktů (drift gaty)🟢
5Pre-commit / pre-push kontroly (husky, lint-staged)🟢
6Vynucení hranic mezi moduly (import boundaries)🟠
7Audit zranitelností závislostí🟠
8Kontrola nepoužívaného kódu (knip)🔴
9Vynucení konvence commit zpráv (commitlint)🔴

📈 Metriky ze SonarCloudu

Reálné hodnoty z dashboardu (agregace za projekt, 13 aplikací):

MetrikaHodnota
Maintainability🟢 A
Reliability🟠 B
Security🟠 B
Technický dluh (ratio)0,04 % (≈ 5 d 6 h)
Blocker / Critical issues0 / 26
Major / Minor issues81 / 241
Coverage84,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ý modul tf-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ář v packages/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í

PrioritaDoporuč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.