Nástroje statickej analýzy Java v aplikáciách Eclipse a IntelliJ IDEA

1. Prehľad

V našom úvode do aplikácie FindBugs sme sa pozreli na funkčnosť nástroja FindBugs ako nástroja na statickú analýzu a na to, ako ho možno priamo integrovať do IDE, ako sú Eclipse a IntelliJ Idea.

V tomto článku sa pozrieme na niekoľko alternatívnych nástrojov statickej analýzy pre Javu - a na to, ako sa tieto integrujú s Eclipse a IntelliJ IDEA.

2. PMD

Začnime s PMD.

Tento vyspelý a celkom dobre zavedený nástroj analyzuje zdrojový kód z hľadiska možných chýb, neoptimálnych kódov a iných zlých postupov; tiež sa zameriava na pokročilejšie metriky, ako je cyklomatická zložitosť, pre kódovú základňu, ktorú analyzuje.

2.1. Integrácia s Eclipse

Doplnok PMD je možné nainštalovať priamo z Eclipse Marketplace. Doplnok je možné tiež tu stiahnuť ručne. Po nainštalovaní môžeme spustiť kontrolu PMD priamo zo samotného IDE:

Stojí za zmienku, že PMD môžeme prevádzkovať na úrovni projektu alebo na úrovni individuálnej triedy.

Výsledky sú uvedené nižšie - s rôznymi farbami pre rôzne úrovne nálezu, ktoré sa pohybujú od „varovania“ po „blokátora“ v stúpajúcom poradí závažnosti:

Podrobnosti o každej položke môžeme prehĺbiť kliknutím pravým tlačidlom myši a výberom možnosti „zobraziť podrobnosti“ v kontextovej ponuke. Eclipse zobrazí stručný popis problému a možné riešenie problému:

Je tiež možné zmeniť konfiguráciu skenovania PMD - môžeme to urobiť v ponuke pod položkou Okno -> Predvoľby -> PMD, aby sa spustila konfiguračná stránka. Tu môžeme nakonfigurovať parametre skenovania, sadu pravidiel, nastavenie zobrazenia výsledkov atď.

Ak potrebujeme deaktivovať niektoré špecifické pravidlá pre projekt - môžeme ich jednoducho z kontroly odstrániť:

2.2. Integrácia s IntelliJ

IntelliJ má samozrejme podobný doplnok PMD - ktorý je možné stiahnuť a nainštalovať z obchodu doplnkov JetBrains.

Podobne môžeme spustiť plugin priamo v IDE - kliknutím pravým tlačidlom myši na zdroj, ktorý potrebujeme skenovať, a výberom kontroly PMD z kontextovej ponuky:

Výsledky sa zobrazia okamžite, ale na rozdiel od Eclipse, ak sa pokúsime otvoriť popis, otvorí sa prehľadávač s verejnou webovou stránkou pri hľadaní informácií:

Správanie doplnku PMD môžeme nastaviť na stránke s nastaveniami tak, že prejdeme na položky File -> Settings -> other settings -> PMD to view configuration page. Na stránke nastavení môžeme nakonfigurovať sadu pravidiel načítaním vlastnej sady pravidiel s našimi vlastnými pravidlami testovania.

3. JaCoCo

Ďalej - JaCoCo je nástroj na pokrytie testu - slúži na sledovanie pokrytia testom jednotky v kódovej základni. Jednoducho povedané, nástroj vypočítava pokrytie pomocou mnohých stratégií, napríklad: riadky, trieda, metódy atď.

3.1. Integrácia s Eclipse

JaCoCo je možné nainštalovať priamo z trhu. Odkaz na inštaláciu je tiež hostený na oficiálnej stránke, ktorá je k dispozícii tu.

Nástroj je možné spustiť z úrovne projektu na úroveň individuálnej metódy. Doplnok Eclipse používa rôzne farebné schémy na určenie, ktorá časť kódu je zahrnutá v testovacích prípadoch a čo nie:

Naša metóda rozdelí dva poskytnuté celočíselné parametre a vráti výsledok. Ak je druhý parameter nula, vráti maximálnu hodnotu pre celočíselný dátový typ.

V našom testovacom prípade testujeme iba scenár, kde je druhý parameter nula:

V tomto prípade vidíme, že riadok 6 je zafarbený žltou farbou. V našom jednoduchom teste je testovaná a beží iba jedna vetva stavu „ak“. Preto nie je úplne testovaný a označený žltou farbou.

Riadok 7 má navyše zelenú farbu - to znamená, že je úplne testovaný. Nakoniec je riadok 9 zvýraznený červenou farbou, čo znamená, že tento riadok nie je vôbec testovaný našimi jednotkovými testami.

Vidíme súhrn pokrytia testom kde sa zobrazuje, koľko kódu je pokryté testami jednotiek na úrovni triedy a balíka:

3.2. Integrácia s IntelliJ IDEA

JaCoCo je štandardne dodávaný s najnovšou distribúciou IntelliJ IDEA, takže nie je potrebné inštalovať doplnok samostatne.

Pri vykonávaní testov jednotiek môžeme zvoliť, aký bežec pokrytia musíme použiť. Testovacie prípady môžeme spustiť buď na úrovni projektu, alebo na úrovni triedy:

Podobne ako Eclipse, JaCoCo zobrazuje výsledky pomocou rôznych farebných schém pokrytia.

Vidíme súhrn pokrytia testom, kde sa zobrazuje, koľko kódu je pokryté testami jednotiek na úrovni triedy a balíka.

4. Cobertura

Na záver stojí za zmienku Cobertura - táto sa podobne používa na sledovanie pokrytia jednotkových testov v kódovej základni.

Posledná verzia aplikácie Eclipse v čase písania tohto článku nepodporuje doplnok Cobertura; plugin funguje s predchádzajúcimi verziami Eclipse.

Rovnako IntelliJ IDEA nemá oficiálny doplnok, ktorý by mohol vykonávať pokrytie Cobertura.

5. Záver

Pozreli sme sa na integráciu s Eclipse a IntelliJ IDEA pre tri široko používané nástroje statickej analýzy. FindBug sa venoval predchádzajúci úvod do FindBugs.

Zdrojový kód tohto tutoriálu nájdete v projekte GitHub - jedná sa o projekt založený na Maven, takže by malo byť ľahké ho importovať a spustiť tak, ako je.


$config[zx-auto] not found$config[zx-overlay] not found