Kihagyás

Forráskód audit

Forráskód audit alatt a forráskód elemzését értjük, amelynek célja az általános, illetőleg az adott teamre egyedileg jellemző kódolási szabályok megsértésének detektálása.

  • Legtöbbször automatizáltan, erre a célra fejlesztett szoftverek támogatásával hajtjuk végre
  • A szabályok alapján az elemzés szintaktikailag és szemantikai értelemben is megtörténik
  • Hivatalos (valamely szervezet által elfogadott) és egyedi szabályok alkalmazása

A szabálysértésekre az egyes eszközök jelzést adnak és legtöbbször egy részletes leírást, sokszor példát is linkelnek. Többségük segítségével riportok is készíthetők, valamint integrálhatók az ismert fejlesztői környezetekbe.

Java eszközök

PMD

pmd

"PMD is a static source code analyzer. It finds common programming flaws like unused variables, empty catch blocks, unnecessary object creation, and so forth. It’s mainly concerned with Java and Apex, but supports six other languages."

Tehát a PMD egy statikus kód elemző program java nyelvre, amely képes hibákat találni a programkód futtatása nélkül.

Képes megtalálni a:

  • Nem használt változókat
  • Üres catch blokkokat
  • Fölösleges objektum létrehozásokat
  • stb.

A csomaghoz a fejlesztők egy alap szabálygyűjteményt biztosítanak. A PMD szabálykészlete bővíthető, Java és/vagy XPath segítségével definiálhatók saját szabályok.

PMD szabályok

  • Alapvető szabálycsoportok: Basic, Braces, Clone, Code Basic, Braces, Clone, Code size, Controversal, Coupling, Design, Finalizer, Import, Javabean, JUnit, Java Logging, Naming, Optimization, Strict Exception, String and StringBuffer, Security, Type resolution, Unused code (…)
  • Testreszabhatók
  • Severity: 1-2 (error), 3-4 (warning), 5 (info).
  • 1: hiba
  • 2: potenciális hiba
  • 3: zavaró kód, javítása erősen javasolt
  • 4: jó ízlést sértő
  • 5: nice to have

Letöltése:

Windowson:

  1. Tötltsük le a pmd-bin-6.33.0.zip állományt.
  2. Csomagoljuk ki az zip archívumot, például a C:\pmd-bin-6.33.0 útvonalra.
  3. A C:\pmd-bin-6.33.0\bin elérési útvonalat helyezzók el a PATH környezeti változóba:
    1. Végleges módon - rendszerbeállítások
    2. Ideiglenesen - parancsorban adjuk ki a SET PATH=C:\pmd-bin-6.33.0;%PATH% parancsot
  4. Használata parancssorban: pmd.bat -d c:\src -R rulesets/java/quickstart.xml -f text

Linuxon:

Az alábbi parancsokat hajtsuk végre:

  1. cd $HOME
  2. wget https://github.com/pmd/pmd/releases/download/pmd_releases%2F6.33.0/pmd-bin-6.33.0.zip
  3. unzip pmd-bin-6.33.0.zip
  4. alias pmd="$HOME/pmd-bin-6.33.0/bin/run.sh pmd"
  5. pmd -d /usr/src -R rulesets/java/quickstart.xml -f text

Telepítés

Használat

Checkstyle

"Checkstyle is a development tool to help programmers write Java code that adheres to a coding standard. It automates the process of checking Java code to spare humans of this boring (but important) task. This makes it ideal for projects that want to enforce a coding standard."

Tehát Java kódot tudunk elemezni vele. Nagyon konfigurálható, szinte akármilyen szabályt megadhatunk neki amire figyelnie kell. Pl. commitolás előtt hasznos lehet bekötni a git precommit hookjába, mert ha az adott szabályok nem teljesülnek akkor nem enged commitálni.

Jellemzők:

  • Szabálysémákat definiál, ezek testre szabhatóak (XML alapú leírás)
  • A szabályok gyűjteményekbe szervezhetők (configuration)
  • Saját szabályszerkesztővel rendelkezik

Szabályok

  • Saját gyűjteménye van: Javadoc Comments, Naming conventions, Imports, Size Violations, Whitespace, Modifiers, Blocks, Coding Problems, Class Design, Duplicates, Metrics, Miscellaneous
  • Paraméterezhető szabályok, amelyek XML-ben állíthatók: pl. maximális sorméret
  • Severity: error, warning, info, ignore

Letöltése:

Szedjük le a legújabbat a checkstyle releaseiből vagy keressünk rá a Maven centralon

Telepítés

Használat

Demonstráció

Az órához kapcsolódó projekt demonstrációs feladat itt érhető el.

Feladat

  • Futtassuk le a PMD-t saját projektünkön!
  • Futtassuk le a Checkstyle-t saját projektünkön!
  • Elemezzük a kapott eredményeket! Melyek a kritikus és nem kritikus issuek?
  • Vizsgáljuk meg a SonarQube által adott audit eredményeket!

Utolsó frissítés: 2022-01-13 19:22:49