Java alati za statičku analizu u Eclipseu i IntelliJ IDEA

1. Pregled

U našem uvodu u FindBugs, pogledali smo funkcionalnost FindBugova kao alata za statičku analizu i kako se može izravno integrirati u IDE-ove poput Eclipse i IntelliJ Idea.

U ovom ćemo članku proučiti nekoliko alternativnih alata za statičku analizu za Javu - i kako se oni integriraju s Eclipseom i IntelliJ IDEA.

2. PMD

Krenimo od PMD-a.

Ovaj zreli i prilično dobro uspostavljeni alat analizira izvorni kod za moguće greške, neoptimalne kodove i druge loše prakse; također se bavi i naprednijim mjernim podacima poput ciklomatične složenosti za bazu kodova koju analizira.

2.1. Integracija s Eclipseom

Dodatak PMD može se izravno instalirati s Eclipse Marketplace. Dodatak se također ovdje može ručno preuzeti. Jednom instalirani, možemo pokrenuti provjeru PMD-a izravno iz samog IDE-a:

Vrijedno je napomenuti da PMD možemo izvoditi na razini projekta ili na razini pojedinih razreda.

Rezultati su prikazani u nastavku - s različitim bojama za različite razine nalaza koji se kreću od "upozorenja" do "blokatora" u rastućem redoslijedu ozbiljnosti:

Pojedinosti svakog unosa možemo istražiti tako da ga kliknemo desnom tipkom i odaberemo "prikaži detalje" iz kontekstnog izbornika. Eclipse će prikazati kratki opis problema i moguće sanacije kako ga riješiti:

Također je moguće promijeniti konfiguraciju skeniranja PMD-a - to možemo učiniti u izborniku, pod Prozor -> Postavke -> PMD da bismo pokrenuli konfiguracijsku stranicu. Ovdje možemo konfigurirati parametre skeniranja, skup pravila, postavke prikaza rezultata itd.

Ako trebamo deaktivirati neka posebna pravila za projekt - možemo ih jednostavno ukloniti iz skeniranja:

2.2. Integracija s IntelliJ-om

Naravno, IntelliJ ima sličan dodatak PMD - koji se može preuzeti i instalirati iz trgovine dodataka JetBrains.

Na sličan način možemo pokrenuti dodatak izravno u IDE-u - desnim klikom na izvor koji moramo skenirati i odabirom PMD skeniranja iz kontekstnog izbornika:

Rezultati se prikazuju odmah, ali, za razliku od Eclipsea, ako pokušamo otvoriti opis, otvorit će se preglednik s javnom web stranicom o pronalaženju informacija:

Ponašanje dodatka PMD možemo postaviti na stranici s postavkama, tako da otvorimo Datoteka -> Postavke -> ostale postavke -> PMD za prikaz stranice s konfiguracijom. Na stranici postavki možemo konfigurirati postavljeno pravilo učitavanjem prilagođenog skupa pravila s vlastitim pravilima testiranja.

3. JaCoCo

Nastavljamo dalje - JaCoCo je alat za pokrivanje testova - koristi se za praćenje pokrivenosti jedinice ispitivanja u bazi kodova. Jednostavno rečeno, alat izračunava pokrivenost koristeći brojne strategije, npr. Linije, klasu, metode itd.

3.1. Integracija s Eclipseom

JaCoCo se može izravno instalirati s tržišta. Poveznica za instalaciju smještena je i na službenoj web stranici koja je ovdje dostupna.

Alat se može izvršiti od razine projekta do razine pojedinačne metode. Dodatak Eclipse koristi različite sheme boja kako bi odredio koji dio koda pokrivaju test slučajevi, a koji nije obuhvaćen:

Naša metoda dijeli dva predviđena cjelobrojna parametra i vraća rezultat. Ako je drugi parametar nula, vratit će maksimalnu vrijednost za cjelobrojni tip podataka.

U našem testnom slučaju testiramo samo scenarij u kojem je drugi parametar nula:

U ovom slučaju možemo vidjeti da je linija 6 obojena žutom bojom. U našem jednostavnom testu testirana je i pokreće se samo jedna grana uvjeta "ako". Stoga nije u potpunosti testiran i označen žutom bojom.

Nadalje, linija 7 ima zelenu boju - znači da je u potpunosti testirana. Konačno, redak 9 označen je crvenom bojom, što znači da naša jedinica uopće ne testira tu liniju.

Možemo vidjeti sažetak pokrivenosti testom gdje prikazuje koliko je koda obuhvaćeno jedinstvenim testovima na razini klase i razinama paketa:

3.2. Integracija s IntelliJ IDEA

JaCoCo se prema zadanim postavkama isporučuje s najnovijom IntelliJ IDEA distribucijom, tako da nema potrebe za dodatnom instalacijom dodatka.

Tijekom izvršavanja jediničnih testova možemo odabrati koji trkač pokrivenosti trebamo koristiti. Test slučajeve možemo izvoditi na razini projekta ili na razini predavanja:

Slično Eclipseu, JaCoCo prikazuje rezultate koristeći različite sheme boja za pokrivanje.

Sažetak pokrivenosti testom možemo vidjeti gdje prikazuje koliki je dio koda pokriven jedinstvenim testovima na razini klase i razinama paketa.

4. Cobertura

Na kraju, vrijedno je spomenuti Coberturu - ona se na sličan način koristi za praćenje pokrivenosti jediničnim testom u kodnoj bazi.

Najnovija verzija Eclipse ne podržava dodatak Cobertura u vrijeme pisanja ovog članka; dodatak radi s ranijim verzijama Eclipsea.

Slično tome, IntelliJ IDEA nema službeni dodatak koji može izvršiti Cobertura pokrivenost.

5. Zaključak

Razmotrili smo integraciju s Eclipseom i IntelliJ IDEA za tri široko korištena alata za statičku analizu. FindBug je obrađen u prethodnom uvodu u FindBugs.

Izvorni kod ovog vodiča može se naći u projektu GitHub - ovo je projekt zasnovan na Mavenu, pa bi ga trebalo lako uvesti i pokrenuti takav kakav jest.