Statiske analyseværktøjer til Java i Eclipse og IntelliJ IDEA

1. Oversigt

I vores introduktion til FindBugs så vi på FindBugs funktionalitet som et statisk analyseværktøj, og hvordan det kan integreres direkte i IDE'er som Eclipse og IntelliJ Idea.

I denne artikel vil vi se på få af de alternative statiske analyseværktøjer til Java - og hvordan disse integreres med Eclipse og IntelliJ IDEA.

2. PMD

Lad os starte med PMD.

Dette modne og ganske veletablerede værktøj analyserer kildekoden for mulige fejl, suboptimale koder og anden dårlig praksis; det ser også på mere avancerede målinger såsom cyklomatisk kompleksitet for den kodebase, den analyserer.

2.1. Integration med formørkelse

PMD-pluginet kan installeres direkte fra Eclipse Marketplace. Pluginet kan også downloades manuelt også her. Når vi er installeret, kan vi køre PMD-kontrollen direkte fra selve IDE:

Det er værd at bemærke, at vi kan køre PMD på projektniveau eller på individuelt klasseniveau.

Resultaterne er vist nedenfor - med forskellige farver for forskellige niveauer af fundet, der spænder fra "advarsel" til "blokkering" i stigende rækkefølge:

Vi kan grave i detaljerne for hver post ved at højreklikke på den og vælge "vis detaljer" i genvejsmenuen. Eclipse viser en kort beskrivelse af problemet og mulig afhjælpning af, hvordan man løser det:

Det er også muligt at ændre konfigurationen af ​​PMD-scanningen - det kan vi gøre i menuen under Vindue -> Indstillinger -> PMD for at starte konfigurationssiden. Her kan vi konfigurere scanningsparametre, regelsæt, resultatvisningsindstillinger osv.

Hvis vi har brug for at deaktivere nogle specifikke regler for projektet - kan vi blot fjerne dem fra scanningen:

2.2. Integration med IntelliJ

Selvfølgelig har IntelliJ et lignende PMD-plugin - som kan downloades og installeres fra JetBrains-pluginbutikken.

Vi kan ligeledes køre pluginet lige i IDE - ved at højreklikke på den kilde, vi har brug for til at scanne, og vælge PMD-scanning i genvejsmenuen:

Resultaterne vises med det samme, men i modsætning til i formørkelse, hvis vi prøver at åbne beskrivelsen, åbner den en browser med en offentlig webside for at finde information:

Vi kan indstille PMD-pluginets opførsel fra indstillingssiden ved at gå til Filer -> Indstillinger -> andre indstillinger -> PMD for at se konfigurationssiden. Fra indstillingssiden kan vi konfigurere regelsættet ved at indlæse et tilpasset regelsæt med vores egne testregler.

3. JaCoCo

Gå videre - JaCoCo er et testdækningsværktøj - bruges til at holde styr på enhedstestdækning i kodebasen. Enkelt sagt beregner værktøjet dækningen ved hjælp af en række strategier, fx: linjer, klasse, metoder osv.

3.1. Integration med formørkelse

JaCoCo kan installeres direkte fra markedet. Et installationslink er også hostet på det officielle websted, der er tilgængeligt her.

Værktøjet kan udføres fra projektniveau til individuelt metodeniveau. Eclipse-pluginet bruger forskellige farveskemaer til at finde ud af, hvilken del af koden der er dækket af testsagerne, og hvad der ikke er dækket:

Vores metode er at dele to angivne heltalsparametre og returnere resultatet. Hvis den anden parameter er nul, returnerer den en maksimumsværdi for heltal datatypen.

I vores testtilfælde tester vi kun scenariet, hvor den anden parameter er nul:

I dette tilfælde kan vi se, at linje 6 er farvet i gul. Kun en gren af ​​'hvis' tilstanden testes og kører i vores enkle test. Derfor er den ikke fuldstændigt testet og markeret med gul.

Desuden har linje 7 grøn farve - det betyder, at den er fuldt testet. Endelig er linje 9 fremhævet med en rød farve, hvilket betyder, at denne linje slet ikke er testet af vores enhedstest.

Vi kan se et resumé af testdækningen hvor det viser, hvor meget kode der er dækket af enhedstest på klasseniveau og pakke niveauer:

3.2. Integration med IntelliJ IDEA

JaCoCo leveres som standard med den nyeste IntelliJ IDEA-distribution, så der er ikke noget krav om at installere pluginet separat.

Når vi udfører enhedstest, kan vi vælge, hvilken dækningsløber vi skal bruge. Vi kan køre testsagerne enten på projektniveau eller på klasseniveau:

I lighed med Eclipse viser JaCoCo resultater ved hjælp af forskellige farveskemaer til dækningen.

Vi kan se resuméet af testdækningen, hvor det viser, hvor meget af koden der er dækket af enhedstest på klasseniveau og pakkeniveau.

4. Cobertura

Endelig er det værd at nævne Cobertura - dette bruges på samme måde til at holde styr på enhedstestdækning i kodebasen.

Den seneste version af Eclipse understøtter ikke Cobertura-pluginet i skrivende stund. pluginet fungerer sammen med tidligere Eclipse-versioner.

Tilsvarende har IntelliJ IDEA ikke et officielt plugin, der kan udføre Cobertura-dækningen.

5. Konklusion

Vi kiggede på integration med Eclipse og IntelliJ IDEA for tre meget anvendte statiske analyseværktøjer. FindBug blev dækket af en tidligere introduktion til FindBugs.

Kildekoden til denne vejledning kan findes i GitHub-projektet - dette er et Maven-baseret projekt, så det skal være let at importere og køre som det er.


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