Java Static Analysis Tools i Eclipse og IntelliJ IDEA

1. Oversikt

I vår introduksjon til FindBugs så vi på funksjonene til FindBugs som et statisk analyseverktøy og hvordan det kan integreres direkte i IDEer som Eclipse og IntelliJ Idea.

I denne artikkelen skal vi se på noen av de alternative statiske analyseverktøyene for Java - og hvordan disse integreres med Eclipse og IntelliJ IDEA.

2. PMD

La oss starte med PMD.

Dette modne og ganske veletablerte verktøyet analyserer kildekoden for mulige feil, suboptimale koder og annen dårlig praksis; det ser også på mer avanserte beregninger som cyklomatisk kompleksitet for kodebasen den analyserer.

2.1. Integrasjon med formørkelse

PMD-pluginet kan installeres direkte fra Eclipse Marketplace. Plugin kan også lastes ned manuelt her også. Når vi er installert, kan vi kjøre PMD-kontrollen direkte fra selve IDE:

Det er verdt å merke seg at vi kan kjøre PMD på prosjektnivå eller på individuelt klassenivå.

Resultatene er vist nedenfor - med forskjellige farger for forskjellige nivåer av funnet som spenner fra “advarsel” til “blokkerer” i økende rekkefølge:

Vi kan grave i detaljene for hver oppføring ved å høyreklikke på den og velge "vis detaljer" fra hurtigmenyen. Eclipse vil vise en kort beskrivelse av problemet og mulig utbedring av hvordan det skal løses:

Det er også mulig å endre konfigurasjonen av PMD-skanningen - vi kan gjøre det i menyen under Window -> Preferences -> PMD for å starte konfigurasjonssiden. Her kan vi konfigurere skanneparametere, regelsett, resultatvisningsinnstillinger osv.

Hvis vi trenger å deaktivere noen spesifikke regler for prosjektet - kan vi bare fjerne dem fra skanningen:

2.2. Integrasjon med IntelliJ

Selvfølgelig har IntelliJ et lignende PMD-plugin - som kan lastes ned og installeres fra JetBrains plugin-butikk.

Vi kan på samme måte kjøre pluginet rett i IDE - ved å høyreklikke på kilden vi trenger for å skanne og velge PMD-skanning fra hurtigmenyen:

Resultatene vises umiddelbart, men i motsetning til i formørkelse, hvis vi prøver å åpne beskrivelsen, vil den åpne en nettleser med en offentlig webside for å finne informasjon:

Vi kan angi oppførselen til PMD-pluginet fra innstillingssiden ved å gå til Fil -> Innstillinger -> andre innstillinger -> PMD for å se konfigurasjonssiden. Fra innstillingssiden kan vi konfigurere regelsettet ved å laste inn et tilpasset regelsett med våre egne testregler.

3. JaCoCo

Videre - JaCoCo er et testdekkingsverktøy - brukes til å holde oversikt over enhetstestdekning i kodebasen. Enkelt sagt, verktøyet beregner dekningen ved hjelp av en rekke strategier, for eksempel: linjer, klasse, metoder, etc.

3.1. Integrasjon med formørkelse

JaCoCo kan installeres direkte fra markedet. En installasjonslink er også vert på det offisielle nettstedet som er tilgjengelig her.

Verktøyet kan kjøres fra prosjektnivå til individuelt metodenivå. Eclipse-pluginet bruker forskjellige fargevalg for å finne ut hvilken del av koden som dekkes av testtilfellene og hva som ikke dekkes:

Metoden vår er å dele to angitte heltallsparametre og returnere resultatet. Hvis den andre parameteren er null, returnerer den en maksimal verdi for datatypen for heltall.

I testtilfellet vårt tester vi bare scenariet der den andre parameteren er null:

I dette tilfellet kan vi se at linje 6 er farget i gult. Bare en gren av 'hvis' tilstanden blir testet og kjører i vår enkle test. Derfor er den ikke fullstendig testet og merket med gult.

Videre har linje 7 grønn farge - det betyr at den er fullstendig testet. Til slutt er linje 9 uthevet med en rød farge, noe som betyr at denne linjen ikke testes i det hele tatt av enhetstestene våre.

Vi kan se et sammendrag av testdekningen der den viser hvor mye kode som dekkes under enhetstester på klassenivå og pakkenivå:

3.2. Integrasjon med IntelliJ IDEA

JaCoCo leveres som standard med den nyeste IntelliJ IDEA-distribusjonen, så det er ikke noe krav å installere plugin separat.

Når vi utfører enhetstester, kan vi velge hvilken dekningsløper vi trenger å bruke. Vi kan kjøre testsakene enten på prosjektnivå eller på klassenivå:

I likhet med Eclipse viser JaCoCo resultater ved hjelp av forskjellige fargevalg for dekningen.

Vi kan se sammendraget av testdekningen der den viser hvor mye av koden som dekkes under enhetstester på klassenivå og pakkenivå.

4. Cobertura

Til slutt er det verdt å nevne Cobertura - dette brukes på samme måte for å holde oversikt over enhetstestdekning i kodebasen.

Den siste versjonen av Eclipse støtter ikke Cobertura-plugin i skrivende stund. pluginet fungerer med tidligere Eclipse-versjoner.

På samme måte har IntelliJ IDEA ikke et offisielt plugin som kan utføre Cobertura-dekningen.

5. Konklusjon

Vi så på integrasjon med Eclipse og IntelliJ IDEA for tre mye brukte statiske analyseverktøy. FindBug ble dekket i en tidligere introduksjon til FindBugs.

Kildekoden til denne veiledningen finner du i GitHub-prosjektet - dette er et Maven-basert prosjekt, så det skal være enkelt å importere og kjøre som det er.


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