Aug 4, 2010

PMD = Project Mess Detector

Napísať a udržiavať kus softvéru je náročná úloha. Každý vývojár zvykne mimovoľne robiť chyby. Zvyčajne sú to malé preklepy, ktoré odchytí kompilér, avšak ostatné chyby možu ostať neodhalené až do momentu nasadenia aplikácie v produkčnom prostredí. Okrem následkov zlyhania aplikácie, softvérové defekty nesú so sebou aj podstatné finančné náklady na svoje odstránenie. Jednou z možností ako predísť defektom je včas ich odhaliť.

PMD je nástroj, ktorý skenuje zdrojový kód a hľadá v ňom možné problémy ako:

  • nevhodný dizajn - prázdne try—catch—finaly/switch bloky …
  • mŕtvy kód - nepoužívané lokálne premenné, parametre a privátne metódy …
  • neoptimálny kód - nové inštancie v slučkách …
  • prekomplikované výrazy - nepotrebné if výrazy, vnorené for cykly …
  • duplicitný kód - copy-paste kód znamená copy-paste bugs

Podľa tvorcov PMD skratka nemá žiadny význam, ale minimálne jedna výstižná sa nájde: “Project Mess Detector”.

Prečo používať PMD?

  • S PMD dokážeme posúdiť kvalitu kódu na základe jednoduchých pravidiel. Ako povedal Tom DeMarco, “nevieme kontrolovať to čo nevieme merať”.
  • Nielen junior vývojári majú svoje drobné “zlozvyky”. PMD včas odhalí nevhodný dizajn kódu a pomože nám túto úlohu zautomatizovať.
  • PMD vie či vývojári dodržiavajú interné code guidelines a dohodnuté štandardy.

FlexPMD

FlexPMD je klon PMD určený pre ActionScript 3 a MXML. Okrem všeobecných PMD pravidiel obsahuje pravidlá špecifické pre Flex SDK, Cairngorm, AsDocs, MXML, Bindings, CSS, Events atď. FlexPMD sa dá spustiť napríklad z príkazovej riadky, Ant skriptu, Eclipse, z Mac OSX Automator alebo Maven-om (http://opensource.adobe.com/wiki/display/flexpmd/How+to+invoke+FlexPMD). Výsledný report s porušeniami pravidiel (súbor vo formáte XML) sa dá interpretovať viacerými spôsobmi (http://opensource.adobe.com/wiki/display/flexpmd/How+to+interpret+results):

priamo v Eclipse prostredí,

v Hudson-e

alebo v prehliadači (http://opensource.adobe.com/svn/opensource/flexpmd/bin/flex-pmd-violations-viewer.html).

Best practices

Zvoľte si pravidlá, ktoré vám vyhovujú

Povolenie všetkých pravidiel spôsobí vytvorenie obrovského reportu, z ktorého veľké množstvo porušení aj tak nebude dôležitých. Prehrabávanie sa tisíckami riadkov reportu pre pár výnimiek asi čoskoro prestane baviť. Začnite s bežnými kategóriami pravidiel a neskôr pridávajte ďalšie. Šikovný nástroj od Adobe vypľuje naklikaný RuleSet: http://opensource.adobe.com/svn/opensource/flexpmd/bin/flex-pmd-ruleset-creator.html.

Používajte IDE plugin

Používať PMD v IDE je príjemnešie ako prepínať medzi HTML reportom a IDE tam a späť. Vo väčšine IDE, klik na výnimku v reporte spôsobí skok na konkrétny problémový riadok v kóde.

Nesnažte sa dosiahnúť 0 výnimiek

Snahou nie je dosiahnúť prázdny report, ten má len Chuck Norris. Vždy budú existovať v projekte výnimky, ktoré pravidlá porušia.

Literatúra:

Blog comments powered by Disqus

About
Subscribe via RSS.