Ú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.