Kontrola kvality kódu

Nástroje Delphi a C++Builder poskytují širokou flexibilitu. Proto je při programování v těchto prostředích zásadní udržovat dobrou kvalitu kódu. DerScanner se zaměčuje na nejčastější problémy, mezi které patří například:

  • Delphi nemá automatický garbage collection jako Java nebo Python. Vyžaduje explicitní správu paměti. Špatně spravovaný kód může vést k únikům paměti.
  • Delphi se silně spoléhá na programování založené na událostech a vizuální komponenty. Špatně napsané obslužné rutiny událostí nebo úzce propojené komponenty mohou ztěžovat ladění, rozšiřování nebo úpravy aplikací. Silný typizační systém Delphi snižuje chyby za běhu, ale vyžaduje pečlivou pozornost k datovým typům. Špatně strukturovaný kód může vést ke zbytečným konverzím typů nebo skrytým chybám, které je za běhu obtížnější odhalit.
  • Delphi se kompiluje přímo do nativního strojového kódu. To znamená, vyšší rychlost ve srovnání s jazyky jako C# nebo Java, ale také že kód prochází za běhu méně bezpečnostními mechanismy. Špatné praktiky, jako je nesprávné zpracování výjimek nebo nebezpečné použití ukazatelů, mohou vést k pádům.
  • Delphi se široce používá v podnikových aplikacích. Mnoho z těchto aplikací je v produkci již desítky let. Proto je udržovatelnost hlavním přínosem jazyka Delphi. Kvalitní kód v konečném důsledku usnadňuje aktualizaci nebo refaktorování starších systémů.
  • Delphi vytváří vysoce optimalizované nativní aplikace pro Windows, macOS, iOS, Android a Linux. Špatně napsaný kód může vést ke zbytečné spotřebě paměti, pomalému provádění nebo neefektivnímu vykreslování grafického uživatelského rozhraní. Mnoho aplikací Delphi se používá v průmyslových řídicích systémech, zdravotnických zařízeních a vestavěných prostředích. Tyto systémy vyžadují vysokou spolehlivost, protože selhání by mohla mít vážné následky. Kvalitní kód pomáhá předcházet pádům, únikům paměti a neočekávanému chování.

Pozor, v C++Builderu nemusí být některé z uvedených funkcí k dispozici!

QA v Delphi/C++Builderu*

V Delphi 12 Athens (platí i pro starší verze) jsou k dispozici nástroje pro analýzu kvality kódu. QA metriky (Quality Assurance Metrics) pomáhají vývojářům identifikovat potenciální problémy, zlepšovat strukturu kódu a udržovat vysokou úroveň čitelnosti a udržovatelnosti.

Kvalitu kódu lze také zlepšovat s použitím QA Audits. Na rozdíl od metrik, které měří kvantitativní vlastnosti kódu, audity hodnotí kvalitativní aspekty – například porušení návrhových principů, použití špatných praktik nebo potenciální chyby.

*V C++Builderu nejsou uvedené možnosti implementované v plném rozsahu.

QA Metriky

QA Metriky poskytují informace o měřitelných atributech jako je počet zanoření, počet tříd, na které je daná třída závislá a podobně. Lze si tak stanovit prahové hodnoty a ve výstupu rychle vyhledat místa v kódu, která daný cíl nesplňují.

Použití QA metrik

  • Otevřeme vybraný projekt Delphi
  • V hlavní nabídce prostředí vybereme Project -> QA Metrics
  • V dialogovém okně nastavíme:
    • Scope – zda analyzovat celý projekt nebo jen vybrané části
    • Metriky – zvol konkrétní metriky, které chceš spustit
    • Nastav volitelné parametry (např. limity, granularitu)
  • Klikneme na Start – výsledky se zobrazí v panelu “Metrics“.

Příklady metrik

  • Cyclomatic Complexity – měří počet nezávislých cest skrz metodu
  • Depth of Inheritance Tree (DIT) – hloubka dědičnosti třídy
  • Number of Children (NOC) – kolik tříd dědí z dané třídy
  • Coupling Between Objects (CBO) – počet tříd, na které je daná třída závislá

Výhody použití QA metrik

  • Zvýšení kvality kódu – Pomáhají odhalit problematické části kódu, které mohou být těžko udržovatelné nebo náchylné k chybám
  • Lepší architektura – Umožňují sledovat, zda návrh tříd a modulů odpovídá principům dobrého návrhu (např. SOLID)
  • Podpora refaktoringu – Identifikují části kódu, které by měly být přepracovány
  • Měřitelnost pokroku – Umožňují sledovat vývoj kvality kódu v čase
  • Zvýšení týmové efektivity – Pomáhají udržet jednotný styl a kvalitu napříč týmem

QA Audits

QA Audits poskytují informace o dodržování obecně doporučených pravidel / principů vývoje. Například použití globálních proměnných, metody s příliš mnoha parametry, silné závislosti mezi třídami a mnoho dalších.

Použití QA Audits

  • Otevřeme vybraný projekt
  • V hlavní nabídce prostředí vybereme Project -> QA Audits
  • V dialogovém okně nastavíme:
    • Scope (celý projekt nebo jen vybrané části).
    • Vyber konkrétní audity – Vybereme požadované audity
  • Klikneme na Start – Delphi provede analýzu a výsledky zobrazí v panelu „Audits“

Příklady auditů

  • Avoid global variables – upozorní na použití globálních proměnných
  • Too many parameters – detekuje metody s příliš mnoha parametry
  • Class too big – označí třídy, které mají příliš mnoho členů
  • Tight coupling – upozorní na silné závislosti mezi třídami
  • Missing documentation – detekuje chybějící komentáře u veřejných členů

Výhody použití QA Audits

  • Zajištění konzistence – Pomáhají udržet jednotný styl a strukturu kódu napříč týmem
  • Odhalení problémů v návrhu – Upozorňují na porušení principů jako je zapouzdření, nadměrná závislost, špatná dědičnost apod.
  • Zvýšení udržovatelnosti – Identifikují části kódu, které mohou být obtížně rozšiřitelné nebo testovatelné
  • Podpora refaktoringu – Navrhují konkrétní místa, kde je vhodné provést úpravy
  • Automatizace code review – Umožňují rychlou a objektivní kontrolu bez nutnosti ručního procházení celého kódu
FunkceQA AuditsQA Metrics
Typ analýzyKvalitativní (porušení pravidel)Kvantitativní (měření hodnot)
VýstupSeznam problémůČíselné hodnoty
PoužitíCode review, refaktoringMonitoring složitosti, návrhu
PřizpůsobeníVýběr auditů, úroveň závažnostiVýběr metrik, nastavení prahových hodnot