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.