Java statikus elemző eszközök az Eclipse-ben és az IntelliJ IDEA-ban

1. Áttekintés

A FindBugs bevezetésünkben megvizsgáltuk a FindBugs, mint statikus elemző eszköz funkcionalitását, és azt, hogyan lehet közvetlenül integrálni az IDE-be, mint például az Eclipse és az IntelliJ Idea.

Ebben a cikkben megvizsgálunk néhány alternatív statikus elemző eszközt a Java számára - és hogyan integrálódnak ezek az Eclipse-hez és az IntelliJ IDEA-hoz.

2. PMD

Kezdjük a PMD-vel.

Ez az érett és meglehetősen jól bevált eszköz elemzi a forráskódot a lehetséges hibák, a nem optimális kódok és más rossz gyakorlatok szempontjából; emellett olyan fejlettebb mutatókat is megvizsgál, mint például az elemzett kódbázis ciklikus komplexitása.

2.1. Integráció az Eclipse programmal

A PMD plugin közvetlenül telepíthető az Eclipse Marketplace webhelyről. A plugin itt is manuálisan letölthető. A telepítés után a PMD-ellenőrzést közvetlenül az IDE-től futtathatjuk:

Érdemes megjegyezni, hogy a PMD-t futtathatjuk projekt szinten vagy egyéni osztály szinten.

Az eredményeket az alábbiakban mutatjuk be - különböző színekkel a lelet különböző szintjein, amelyek a „figyelmeztetéstől a„ blokkolóig ”terjednek a súlyosság növekvő sorrendjében:

Az egyes bejegyzések részleteibe belemerülhetünk, ha jobb egérgombbal kattintunk rá, és a helyi menüből kiválasztjuk a „részletek megjelenítése” lehetőséget. Az Eclipse megjeleníti a probléma rövid leírását és lehetséges megoldását:

A PMD vizsgálat konfigurációjának megváltoztatása is lehetséges - ezt megtehetjük a menü Ablak -> Beállítások -> PMD menüpontjában a konfigurációs oldal elindításához. Itt konfigurálhatjuk a szkennelési paramétereket, a szabálykészletet, az eredménymegjelenítés beállításait stb.

Ha ki kell kapcsolnunk néhány konkrét szabályt a projekthez - egyszerűen eltávolíthatjuk őket a vizsgálatból:

2.2. Integráció az IntelliJ-vel

Természetesen az IntelliJ rendelkezik hasonló PMD bővítménnyel - amely letölthető és telepíthető a JetBrains bővítmény áruházból.

Hasonló módon futtathatjuk a bővítményt közvetlenül az IDE-ben - jobb gombbal kattintva a beolvasandó forrásra, és a helyi menüből kiválasztva a PMD-vizsgálatot:

Az eredmények azonnal megjelennek, de az Eclipse-től eltérően, ha megpróbáljuk megnyitni a leírást, akkor egy böngésző nyílik meg egy nyilvános weboldallal az információk megtalálásához:

A PMD plugin viselkedését a beállítások oldalon állíthatjuk be, ha a File -> Settings -> other settings -> PMD menüpontra kattintva megtekinthetjük a konfigurációs oldalt. A beállítások oldalon konfigurálhatjuk a szabálykészletet úgy, hogy betöltünk egy egyéni szabálykészletet a saját tesztelési szabályainkkal.

3. JaCoCo

Továbbhaladás - A JaCoCo egy teszt lefedettség eszköz - az egység teszt lefedettségének nyomon követésére szolgál a kódalapban. Egyszerűen fogalmazva: az eszköz számos stratégia segítségével kiszámítja a lefedettséget, például: vonalak, osztály, módszerek stb.

3.1. Integráció az Eclipse programmal

A JaCoCo közvetlenül telepíthető a piacról. Az itt elérhető hivatalos oldalon egy telepítési link is található.

Az eszköz végrehajtható projekt szintről egyéni módszer szintre. Az Eclipse beépülő modul különböző színskálák segítségével határozza meg, hogy a kód mely részét fedik le a tesztesetek és mi nem.

A módszerünk két megadott egész paramétert oszt fel és az eredményt adja vissza. Ha a második paraméter nulla, akkor az egész adattípus maximális értékét adja vissza.

Tesztes esetünkben csak azt a forgatókönyvet teszteljük, ahol a második paraméter nulla:

Ebben az esetben láthatjuk, hogy a 6. sor sárga színű. Az „if” feltételnek csak egy ágát tesztelik és futtatják egyszerű tesztünkben. Ezért nincs teljesen tesztelve és sárga színnel jelölve.

Ezenkívül a 7. sor zöld színű - ez azt jelenti, hogy teljesen tesztelték. Végül a 9. sort piros színnel emelik ki, ami azt jelenti, hogy ezt a vonalat az egység tesztjeink egyáltalán nem tesztelik.

Összefoglalót láthatunk a teszt lefedettségéről ahol megmutatja, hogy az egység tesztek mennyi kódot fednek le osztály- és csomagszinteken:

3.2. Integráció az IntelliJ IDEA-val

A JaCoCo alapértelmezés szerint a legújabb IntelliJ IDEA disztribúcióval van csomagolva, így nincs szükség a bővítmény külön telepítésére.

Az egységtesztek végrehajtásakor kiválaszthatjuk, hogy milyen lefedettségi futót kell használnunk. Futtathatjuk a teszteseteket projekt szinten vagy osztály szinten:

Az Eclipse-hez hasonlóan a JaCoCo is különböző színösszeállításokat jelenít meg a lefedettséghez.

Láthatjuk a teszt lefedettségének összefoglalóját, ahol megmutatja, hogy a kód mekkora részét fedik le az egység tesztek osztály szinten és csomag szinten.

4. Cobertura

Végül érdemes megemlíteni a Coberturát - ezt hasonlóan használják az egység teszt lefedettségének nyomon követésére a kódbázisban.

Az Eclipse legújabb verziója az írás idején nem támogatja a Cobertura plugint; a plugin valóban működik a korábbi Eclipse verziókkal.

Hasonlóképpen, az IntelliJ IDEA nem rendelkezik hivatalos pluginnal, amely képes végrehajtani a Cobertura lefedettséget.

5. Következtetés

Megvizsgáltuk az Eclipse és az IntelliJ IDEA integrációját három széles körben használt statikus elemző eszköz esetében. A FindBug-ot a FindBugs korábbi bevezetőjében ismertettük.

Az oktatóanyag forráskódja megtalálható a GitHub projektben - ez egy Maven-alapú projekt, ezért könnyen importálhatónak és futtathatónak kell lennie.