Figyelem: A gyakorlatok során törekedjen mindenki arra, hogy professzionális jellegű munkát végezzen (pl. kerüljük az asdfg commit megjegyzéseket, nem sokkal több idő azt írni helyette, hogy Add acceleration feature vagy Fix #5).

Környezet

A gyakorlat során az előző alkalommal elkészített GitHub tárhelyből induljon ki. A gyakorlat második felében párokban kell dolgozni (pl. egymás mellett ülők).

Statikus analízis

Az első részfeladat célja, hogy az előadáson megismert SonarQube eszköz segítségével statikus analízist végezzen a saját Git tárolójában lévő projekten. A SonarQube egy komplett kódminőséget menedzselő platform, amely több mint 20 nyelvet támogat (például Java, C, C++, C#). Képes ellenőrizni kódolási konvenciókat, duplikált kódot, teszt fedettséget, kód komplexitást, potenciális hibákat és sebezhetőségeket. Az analízisek eredményét adatbázisban tárolja, amely lehetővé teszi jelentések generálását és a változások követését. Ezen részfeladat során végig a lokális tárhelyen kell dolgozni, a GitHub webes felületére nincs szükség.

SonarQube letöltése és indítása

  1. Töltse le a SonarQube eszközt a sonarqube.org/downloads oldalról és tömörítse ki a letöltött állományt egy tetszőleges helyre.
  2. Keresse meg a bin alkönyvtárat, válassza ki az aktuális operációs rendszernek megfelelő alkönyvtárat és azon belül futtassa a ./sonar.sh console (Linux / Mac) vagy StartSonar.bat (Windows) szkriptet.
  3. Várja meg amíg a SonarQube Server három fő komponense elindul (Compute engine, Search server, Web server). Ez több időt vehet igénybe. Amikor mindhárom komponens sikeresen elindult, az alábbi sorokat kell látnia a konzolon:

    jvm 1    | 2016.09.21 17:38:03 INFO  app[o.s.p.m.Monitor] Process[es] is up
    ...
    jvm 1    | 2016.09.21 17:38:45 INFO  app[o.s.p.m.Monitor] Process[web] is up
    ...
    jvm 1    | 2016.09.21 17:38:59 INFO  app[o.s.p.m.Monitor] Process[ce] is up
  4. Nyissa meg böngészőben a http://localhost:9000/ oldalt, ahol láthatja a (jelenleg üres) SonarQube kezdőoldalt (dashboard). Az alapértelmezett admin / admin felhasználóval és jelszóval bejelentkezhet a beállítások testreszabásához, de a jelenlegi gyakorlat során erre nem lesz szükség. A szervert hagyja futni a háttérben, a további feladatokhoz nyisson egy új konzolt.

Analízis

A SonarQube analízis egyszerűen integrálható a Maven fordítási folyamatba.

  1. Fordítsa le az alkalmazást a mvn compile parancs segítségével a projekt gyökérkönyvtárából.
  2. Adja ki a mvn sonar:sonar parancsot, amelynek hatására lefut az analízis.
  3. Nyissa meg böngészőben a http://localhost:9000/ oldalt, ahol a SonarQube kezdőoldalon az analízis sikeres lefuttatása esetén megjelenik a hu.bme.mit.spaceship projekt.
  4. Nyissa meg a projektet és tekintse át a felületet. Tekintse át a potenciális hibákat (Bugs, Vulnerabilities, Code smells). Az egyes hibahelyeknél a ... ikonra kattintva tekinthetők meg az ellenőrzött szabály részletei.
  5. Ne zárja be a SonarQube-ot és a felületét, ugyanis a következő részfeladat során még szükség lesz rá.

(A SonarQube képes a folytonos integráció folyamatába integrálódni, pl. minden commit után lefutni, de ez több előkészületet igényel, ami a jelenlegi gyakorlat időbeosztásába nem fér bele.)

Kód felülvizsgálat

A második részfeladat célja, hogy a SonarQube által megtalált hibák közül néhányat kijavítson, majd párokat alkotva egymás javításait felülvizsgálják a GitHub Pull Request Review szolgáltatásával. A PR Review szolgáltatás célja, hogy olyan funkciókat nyújtson, amelyek a kézi átvizsgálás folyamatát támogatják és hatékonyabbá teszik (pl. megjegyzések fűzése kódsorokhoz).

Hibák javítása

  1. [local] Váltson egy új ágra (git checkout -b <új ág neve>).
  2. [local] Javítsa ki a SonarQube által jelzett 3 darab Bug típusú hibát (a Code Smell hibákat nem kell javítani). Mindegyiket egy-egy külön commit-ban javítsa. Ügyeljen rá, hogy az újonnan létrehozott ágon dolgozzon.
  3. [local] Küldje át az új tartalmat a GitHub-on lévő tárhelyre (push).

Átvizsgálás

  1. [web] Az átvizsgáláshoz alkossanak párokat (pl. egymás mellett ülők). Adja hozzá a saját GitHub tárhelyéhez a társát. Ezt a webes felületen a Settings / Collaborators lapon teheti meg.
  2. [web] Amennyiben a társa is hasonlóan elvégezte az előző lépést, kapott egy e-mail-t. A View invitation linkre kattintva fogadja el a meghívást.
  3. [web] Hozzon létre egy pull request-et (a saját tárhelyén) az alábbi lépések alapján.
    1. [web] A webes felületen a Pull requests fülön a New pull request gombbal kezdje a létrehozást.
    2. [web] A base branch maradjon az alapértelmezett master, a compare branch-nek pedig válassza ki az újonnan létrehozott ágat. Ennek hatására egy Able to merge. feliratnak kell megjelennie és látnia kell az előbb létrehozott commit-okat. A Create pull request gombbal folytassa a létrehozás folyamatát.
    3. [web] A megjelenő új felületen lehet megadni a pull request adatait, beállításait. Nevezze el a pull request-et és írjon hozzá rövid megjegyzést. Jobb oldalt állítsa be önmagát felelősnek (Assignees) és kérjen átvizsgálást a társától (Reviewers).
    4. [web] Véglegesítse a pull request-et a Create pull request gombbal. A társa értesítést fog kapni az átvizsgálás kéréséről.
  4. [web] Amennyiben a társa is hasonlóan elvégezte az előző lépéseket, kapott egy értesítést az átvizsgálás kéréséről. Keresse fel a webes felületen a társa GitHub tárhelyét, azon belül pedig a társa által létrehozott pull request-et.
  5. [web] Végezze el az átvizsgálást az alábbi lépések alapján.
    1. [web] Váltson át a Files changed fülre. Itt látja a megváltozott fájlokat. Vizsgálja át a változásokat és fűzzön megjegyzéseket a sorokra kattintva. Fontos, hogy a kommentet ne az Add single comment, hanem a Start a review gombbal adja hozzá.
    2. [web] Az átvizsgálás végén jobb felül kattintson a Review changes gombra. A lenyíló felületen írjon egy rövid összefoglaló kommentet és kérjen változtatásokat a Request changes opció kiválasztásával.
    3. [web] Küldje be az átvizsgálás eredményét a Submit review gombbal.
  6. [local] Várja meg amíg a társa is elvégzi az átvizsgálást, majd a társától kapott kommentek alapján végezze el a szükséges módosításokat a saját kódján. A változások továbbra is az új ágon kerüljenek egy vagy több commit-ba. Küldje át a változásokat a GitHub-on lévő tárhelyre (push).
  7. [web] Várja meg amíg a társa is elvégzi saját tárhelyén a javítást, majd keresse meg a társa által létrehozott pull request-et. A Files changed fülön látja a változásokat. Fogadja el a javításokat a Review changes gomb alatt lenyíló felületen az Approve lehetőség választásával.
  8. [web] Amennyiben a társa is elfogadta a javításokat és a Travis build is sikeresen lefutott, merge-elje a saját tárhelyéhez tartozó pull request-et (Conversation fülön alul).

Javítások ellenőrzése

  1. [local] Futtassa le újra a SonarQube analízist.
  2. [local] Ellenőrizze a webes felületen, hogy valóban sikerült-e megoldani a választott problémákat.