Úvod do CheckStyle

1. Prehľad

Checkstyle je nástroj s otvoreným zdrojovým kódom, ktorý kontroluje kód podľa konfigurovateľného súboru pravidiel.

V tomto návode sa pozrieme na ako integrovať Checkstyle do projektu Java prostredníctvom Mavenu a pomocou doplnkov IDE.

Doplnky uvedené v nasledujúcich častiach nie sú navzájom závislé a je možné ich integrovať jednotlivo do nášho zostavenia alebo IDE. Napríklad plugin Maven nie je v našom prípade potrebný pom.xml spustiť validácie v našom Eclipse IDE.

2. Doplnok Checkstyle Maven

2.1. Konfigurácia Maven

Ak chcete do projektu pridať Checkstyle, musíme pridať doplnok v sekcii prehľadov a pom.xml:

   org.apache.maven.plugins maven-checkstyle-plugin 3.0.0 checkstyle.xml 

Tento doplnok je dodávaný s dvoma preddefinovanými kontrolami, kontrolou v štýle Sun a kontrolou v štýle Google. Predvolená kontrola projektu je sun_checks.xml.

Ak chcete použiť našu vlastnú konfiguráciu, môžeme určiť náš konfiguračný súbor, ako je to uvedené vo vzorke vyššie. Pomocou tejto konfigurácie bude doplnok teraz čítať našu vlastnú konfiguráciu namiesto poskytnutej predvolenej.

Najnovšiu verziu doplnku nájdete na serveri Maven Central.

2.2. Generovanie správy

Teraz, keď je náš doplnok Maven nakonfigurovaný, môžeme vygenerovať správu pre náš kód spustením stránka mvn príkaz. Po dokončení zostavenia je prehľad k dispozícii v cieľ / stránka priečinok pod menom checkstyle.html.

Správa Checkstyle má tri hlavné časti:

Súbory: Táto časť správy nám poskytuje informácie zoznam súborov, v ktorých došlo k porušeniu. Ukazuje nám tiež počty porušení podľa ich závažnosti. Takto vyzerá správa v časti so súbormi:

Pravidlá: Táto časť správy nám poskytuje: prehľad pravidiel, ktoré sa používali na kontrolu porušení. Zobrazuje kategóriu pravidiel, počet porušení a závažnosť týchto porušení. Tu je ukážka prehľadu, ktorý zobrazuje časť s pravidlami:

Detaily: Nakoniec v časti podrobností správy nájdete: podrobnosti o porušeniach, ku ktorým došlo. Poskytnuté podrobnosti sú na úrovni čísla riadku. Tu je ukážka podrobnej časti prehľadu:

2.3. Budujte integráciu

Ak je potrebné prísne kontrolovať štýl kódovania, môžeme nakonfigurovať plugin takým spôsobom, že zostavenie zlyhá, keď kód nespĺňa štandardy.

Robíme to tak, že do našej definície doplnku pridáme cieľ vykonania:

 org.apache.maven.plugins maven-checkstyle-plugin $ {checkstyle-maven-plugin.version} checkstyle.xml kontrola 

The configLocation atribút definuje, ktorý konfiguračný súbor sa má pri validáciách použiť.

V našom prípade je to konfiguračný súbor checkstyle.xml. Cieľ skontrolovať uvedený v časti o vykonaní, požiada doplnok o spustenie vo fáze overovania zostavenia a vynúti zlyhanie zostavenia, keď dôjde k porušeniu štandardov kódovania.

Teraz, ak spustíme mvn čistá inštalácia príkaz vyhľadá súbory, či v ňom nie sú porušené pravidlá. Ak dôjde k porušeniu, zostavenie zlyhá.

Môžeme tiež prevádzkovať iba server skontrolovať cieľ pluginu pomocou mvn checkstyle: skontrolovať, bez konfigurácie cieľa vykonania. Spustenie tohto kroku povedie tiež k zlyhaniu zostavenia, ak sa vyskytnú chyby overenia.

3. Doplnok Eclipse

3.1. Konfigurácie

Rovnako ako v prípade integrácie Maven, aj Eclipse nám umožňuje používať našu vlastnú konfiguráciu.

Ak chcete importovať našu konfiguráciu, prejdite na Okno -> Predvoľby -> Checkstyle. Na Globálne konfigurácie kontroly sekcii kliknite na Nový.

Týmto sa otvorí dialóg, ktorý nám poskytne možnosti špecifikovať náš vlastný konfiguračný súbor.

3.2. Prehľadávanie prehľadov

Teraz, keď je náš doplnok nakonfigurovaný, môžeme ho použiť na analýzu nášho kódu.

Ak chcete skontrolovať štýl kódovania projektu, kliknite pravým tlačidlom myši na projekt v zozname Prieskumník projektu Eclipse a vyberte CheckStyle -> Skontrolovať kód pomocou Checkstyle.

Doplnok nám poskytne spätnú väzbu k nášmu kódu Java v textovom editore Eclipse. Vygeneruje tiež správu o porušení pravidiel pre projekt, ktorá je k dispozícii ako zobrazenie v aplikácii Eclipse.

Ak chcete zobraziť správu o porušení, prejdite na Okno -> Zobraziť zobrazenie -> Inéa vyhľadajte výraz Checkstyle. Možnosti pre Porušenia a Graf porušení by sa malo zobraziť.

Výber jednej z týchto možností nám poskytne informácie o porušeniach zoskupených podľa typu. Tu je koláčový graf porušenia pravidiel pre vzorový projekt:

Kliknutím na časť koláčového grafu sa dostanete na zoznam skutočných porušení v kóde.

Prípadne môžeme otvoriť Problém pohľad na Eclipse IDE a skontrolujte problémy hlásené pluginom.

Tu je ukážka problémového pohľadu na Eclipse IDE:

Kliknutím na ktorékoľvek z upozornení sa dostanete ku kódu, v ktorom došlo k porušeniu.

4. IntelliJ IDEA Plugin

4.1. Konfigurácia

Rovnako ako Eclipse, aj IntelliJ IDEA nám umožňuje používať vlastné vlastné konfigurácie s projektom.

V IDE otvorte Nastavenia a vyhľadajte Checkstyle. Zobrazí sa okno s možnosťou výberu našich šekov. Klikni na + a otvorí sa okno, ktoré nám umožní určiť umiestnenie súboru, ktorý sa má použiť.

Teraz vyberieme konfiguračný súbor XML a klikneme na Ďalej. Týmto sa otvorí predchádzajúce okno a zobrazí sa naša novo pridaná možnosť vlastnej konfigurácie. Vyberieme novú konfiguráciu a kliknutím na OK ju začneme používať v našom projekte.

4.2. Prehľadávanie prehľadov

Teraz, keď je náš doplnok nakonfigurovaný, použijeme ho na kontrolu porušenia. Ak chcete skontrolovať porušenie konkrétneho projektu, prejdite na Analyzovať -> Skontrolovať kód.

Výsledky inšpekcií nám poskytnú prehľad o porušeniach v časti Kontrolný štýl. Tu je ukážka správy:

Kliknutím na porušenia sa dostanete k presným riadkom v spise, kde k porušeniu došlo.

5. Vlastná konfigurácia kontrolného štýlu

V sekcii generovania zostáv Maven (časť 2.2) sme na vykonanie vlastných štandardných kontrol kódovania použili vlastný konfiguračný súbor.

Máme spôsob, ako vytvoriť náš vlastný konfiguračný súbor XML ak nechceme používať zabalené šeky Google alebo Sun.

Tu je vlastný konfiguračný súbor používaný pri vyššie uvedených kontrolách:

5.1. Definícia DOCTYPE

Prvý riadok, tj. Definícia DOCTYPE, je dôležitou súčasťou súboru a informuje, odkiaľ sa má stiahnuť DTD, aby systém mohol konfiguráciám porozumieť.

Ak túto definíciu nezačleníme do nášho konfiguračného súboru, nebude to platný konfiguračný súbor.

5.2. Moduly

Konfiguračný súbor sa primárne skladá z modulov. Modul má atribút názov čo predstavuje to, čo modul robí. Hodnota názov atribút zodpovedá triede v kóde pluginu, ktorá sa vykoná pri spustení pluginu.

Poďme sa dozvedieť o rôznych moduloch prítomných v konfigurácii vyššie.

5.3. Podrobnosti o module

  • Kontrola: Moduly sú štruktúrované do stromu, ktorý má v koreni modul Checker. Tento modul definuje vlastnosti, ktoré zdedia všetky ostatné moduly konfigurácie.
  • TreeWalker: Tento modul kontroluje jednotlivé zdrojové súbory Java a definuje vlastnosti, ktoré sú použiteľné pri kontrole týchto súborov.
  • AvoidStarImport: Tento modul stanovuje štandard pre nepoužívanie importu hviezd v našom kóde Java. Má tiež vlastnosť, ktorá žiada doplnok, aby nahlásil závažnosť takýchto problémov ako varovanie. Vždy, keď sa v kódexe zistí takéto porušenie, bude na ne upozornené.

Ak sa chcete dozvedieť viac informácií o vlastných konfiguráciách, kliknite na tento odkaz.

6. Analýza správ pre projekt Jarné odpočinok

V tejto časti si posvietime na analýzu vykonanú spoločnosťou Checkstyle pomocou vlastnej konfigurácie vytvorenej v časti 5 vyššie, ako príklad môže slúžiť projekt pruženia, ktorý je k dispozícii na GitHub.

6.1. Generovanie správy o porušení

Importovali sme konfiguráciu do Eclipse IDE a tu je správa o porušení, ktorá sa vygeneruje pre projekt:

Tu uvedené varovania hovoria, že v kóde by sa malo zabrániť importu zástupných znakov. Máme dva súbory, ktoré nie sú v súlade s týmto štandardom. Keď klikneme na varovanie, dostaneme sa do súboru Java, ktorý porušuje pravidlá.

Tu je návod, ako HeavyResourceController.java súbor zobrazuje nahlásené varovanie:

6.2. Riešenie problémov

Používanie importu Star nie je vo všeobecnosti dobrým zvykom, pretože môže spôsobiť konflikty, keď dva alebo viac balíkov obsahuje rovnakú triedu.

Ako príklad zvážte triedu Zoznam, ktoré je dostupné v balíkoch java.util a java.awt oboje. Ak použijeme obidva dovozy z java.util . * a java.awt. * náš kompilátor zlyhá pri kompilácii kódu, ako Zoznam je k dispozícii v oboch balíkoch.

Aby sme vyriešili vyššie uvedený problém, usporiadame importy do oboch súborov a uložíme ich. Keď teraz znova spustíme doplnok, nevidíme porušenia a náš kód teraz sleduje štandardy stanovené v našej vlastnej konfigurácii.

7. Záver

V tomto článku sme sa venovali základom pre integráciu Checkstyle do nášho projektu Java.

Dozvedeli sme sa, že ide o jednoduchý, ale výkonný nástroj, ktorý sa používa na zabezpečenie toho, aby vývojári dodržiavali štandardy kódovania stanovené organizáciou.

Vzorový kód, ktorý sme použili na statickú analýzu, je k dispozícii na GitHub.


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