Úvod do PMD

1. Prehľad

Zjednodušene povedané, PMD je analyzátor zdrojového kódu, ktorý umožňuje vyhľadávať bežné chyby v programovaní, ako sú nepoužívané premenné, bloky prázdnych úlovkov, vytváranie nepotrebných objektov atď.

Podporuje Java, JavaScript, Salesforce.com Apex, PLSQL, Apache Velocity, XML, XSL.

V tomto článku sa zameriame na to, ako používať PMD na vykonávanie statickej analýzy v projekte Java.

2. Predpoklady

Začnime s nastavením PMD do projektu Maven - použitím a konfiguráciou maven-pmd-plugin:

 ... org.apache.maven.plugins maven-pmd-plugin 3.7 /rulesets/java/braces.xml /rulesets/java/naming.xml 

Nájdete najnovšiu verziu servera maven-pmd-plugin tu.

Všimnite si, ako tu pridávame sady pravidiel do konfigurácie - toto je relatívna cesta k už definovaným pravidlám z jadrovej knižnice PMD.

Na záver ešte pred spustením všetkého vytvorme jednoduchú triedu Java s niekoľkými očividnými problémami - s čím môže PMD začať hlásiť problémy:

public class Ct {public int d (int a, int b) {if (b == 0) return Integer.MAX_VALUE; inak vrátiť a / b; }} 

3. Spustite program PMD

Pomocou jednoduchej konfigurácie PMD a vzorového kódu - vygenerujme správu v cieľovom priečinku zostavenia:

stránka mvn

Vygenerovaná správa sa volá pmd.html a nachádza sa v cieľ / stránka priečinok:

Súbory com / baeldung / pmd / Cnt.java Porušujúca čiara Nepoužívajte krátke názvy tried ako Cnt 1–10 Nepoužívajte krátke názvy metód 3 Vyhýbajte sa premenným s krátkymi názvami ako b 3 Vyhýbajte sa premenným s krátkymi názvami ako a 3 Nepoužívajte, ak ... else výroky bez zložených zátvoriek 5 Nepoužívajte príkazy if ... else bez zložených zátvoriek 7 

Ako vidíte - výsledky nedosahujeme. Správa uvádza porušenie a čísla riadkov vo vašom kóde Java, uvádza PMD.

4. Pravidlá

Plugin PMD používa päť predvolených súborov pravidiel:

  • basic.xml
  • prázdny.xml
  • imports.xml
  • nepotrebný.xml
  • unusedcode.xml

Môžete použiť iné sady pravidiel alebo vytvoriť svoje vlastné sady pravidiel a nakonfigurovať ich v doplnku:

 ... org.apache.maven.plugins maven-pmd-plugin 3.7 /rulesets/java/braces.xml /rulesets/java/naming.xml /usr/pmd/rulesets/strings.xml //localhost/design.xml 

Všimnite si, že ako hodnotu hodnoty „sada pravidiel“ v konfigurácii používame buď relatívnu adresu, absolútnu adresu, alebo dokonca adresu URL.

Čistá stratégia prispôsobenia pravidiel, ktoré sa majú pre projekt použiť, je napíš súbor vlastných pravidiel. V tomto súbore môžeme definovať, ktoré pravidlá sa majú použiť, pridať vlastné pravidlá a prispôsobiť, ktoré pravidlá sa majú zahrnúť / vylúčiť z oficiálnych sád pravidiel.

5. Vlastná sada pravidiel

Vyberme si teraz z konkrétnych pravidiel v PMD konkrétne pravidlá, ktoré chceme použiť - a tiež si ich prispôsobme.

Najskôr vytvoríme nový ruleset.xml spis. Samozrejme môžeme použiť jeden z existujúcich súborov s pravidlami ako príklad a skopírovať a vložiť ho do nášho nového súboru, odstrániť z neho všetky staré pravidlá a zmeniť názov a popis:

   Táto sada pravidiel kontroluje, či môj kód neobsahuje chyby 

Po druhé, pridajme niekoľko odkazov na pravidlá:

Alebo pridajte nejaké konkrétne pravidlá:

Môžeme prispôsobiť správu a prioritu pravidla:

 2  

Hodnotu vlastnosti pravidla môžete tiež upraviť takto:

Všimnite si, že môžete prispôsobiť jednotlivé odkazované pravidlá. Vo vašej vlastnej skupine pravidiel je možné prepísať všetko okrem triedy pravidla.

Ďalej - z množiny pravidiel môžete tiež vylúčiť pravidlá:

Ďalej - môžete tiež vylúčiť súbory z množiny pravidiel pomocou vylučovacích vzorov s voliteľným prvkovým vzorom zahrnutia.

Súbor bude vylúčený zo spracovania, ak existuje zodpovedajúci vzor vylúčenia, ale žiadny zodpovedajúci vzor zahrnutia.

Oddeľovače ciest v ceste k zdrojovému súboru sú normalizované na znak „/“, takže tú istú množinu pravidiel možno transparentne použiť na viacerých platformách.

Táto technika vylúčenia a zahrnutia navyše funguje bez ohľadu na to, ako sa používa PMD (napr. Príkazový riadok, IDE, Ant), čo uľahčuje konzistentné uplatňovanie vašich pravidiel PMD v celom vašom prostredí.

Tu je rýchly príklad:

  Moja sada pravidiel. * / Some / package /.*. * / Some / other / package / FunkyClassNamePrefix. *. * / Some / package / ButNotThisClass. * ... 

6. Záver

V tomto rýchlom článku sme predstavili PMD - flexibilný a vysoko konfigurovateľný nástroj zameraný na statickú analýzu kódu Java

Celý kód uvedený v tomto tutoriále je ako vždy k dispozícii na Githube.


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