Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Statikus analízis eszköz futtatása és jelzett hibák átnézése. #5

Closed
klenium opened this issue Apr 10, 2019 · 9 comments
Closed

Comments

@klenium
Copy link
Owner

klenium commented Apr 10, 2019

Javaslat: SonarQube, FindBugs, VS Code Analyzer, Codacy, Coverity Scan

@klenium klenium changed the title **CI és statikus ellenőrzés**: Statikus analízis eszköz futtatása és jelzett hibák átnézése. Statikus analízis eszköz futtatása és jelzett hibák átnézése. Apr 10, 2019
@klenium
Copy link
Owner Author

klenium commented Apr 11, 2019

SonarQube lesz használva, azért is, mert képes megjeleníteni a JaCoCo által generált tesztlefedettség mérését is, sokkal jobb formában, és beépíthető a Travis folyamatába.

@klenium
Copy link
Owner Author

klenium commented Apr 11, 2019

A JaCoCo-nak újabb verziója kell a JDK 12-höz, mint amit a laboron használtunk (7.9 -> 8.2), különben hibát dob.

A JaCoCo beállításai hasonlóak a laboron bemutatottéhoz.

@klenium
Copy link
Owner Author

klenium commented Apr 11, 2019

A labor útmutatója alapján lefut a tetris-java projekten is a SonarQube localhost-on.

Jelenleg 12 bug, 24 code smell található, a code coverage 69.6%.

@klenium
Copy link
Owner Author

klenium commented Apr 11, 2019

A 12 hibának érzékelt eset mindegyike a GraphicGameFrame.java fájlban található, és abból ered, hogy a JavaFX metódusok, pl szélesség, pozíció double típust vár, ellenben a kódban int típusú változók szorzása van a paraméter helyén, pl.:

boardCanvas.setWidth(gridSize.width * blockSize);

A SonarQube-nek igaza van abban, hogy általános esetben az implicit típuskonverziót érdemes kerülni aritmetikai műveleteknél, mert pontosságvesztés vagy túlcsordulás lehetne. Azonban a GraphicGameFrame.java fájlban lévő helyeken a szorzások mindkét operandusáról ismert, hogy kis értékeket vehetnek fel (1-100 közötti érték az ésszerű a rács felépítésére és megjelenítéséhez), így a szorzat se lesz túl nagy (ráadásul a double értékkészlete nagyobb is, mint az int típusé), és egész számok szorzásánál nem veszítünk a pontosságon, ha implicit helyett explicit konverzió lenne.

Ezért ezeket a hibákat hamis pozitívnak jelölöm.

Ennek ellenére már régen is felmerült bennem a probléma ezeknél a soroknál, de eltérő okból. A sok szorzás miatt túl hosszúak a sorok, ami rontja a láthatóságot, indokolatlan mindenhol kiírni az operandusokat, változtatás esetén túl sok helyen kell átírni, ráadásul többször is elvégzi ugyanazt a szorzást fölöslegesen. Felvettem a 0c59439 commitban egy canvasSize tulajdonságot a szorzás eredményének tárolására.

@klenium
Copy link
Owner Author

klenium commented Apr 11, 2019

A többi eset javítása előtt integrálni kellene az ellenőrzési folyamatot a Travis rendszerébe, hogy ne kelljen a Maven parancsokat mindig kiadni, és ne localhost-on fusson (ami így csak képként mutatható be). Erre a célra egy saját szerver kellene, a Travis dokumentációja a SonarCould szolgáltatást ajánlja*, ami kis, nyílt projektekre ingyenes.

* Mint megtudtam, ez nem egy harmadik fél szolgáltatása, mint elsőnek feltételeztem, hanem ugyanannak a csapatnak egy másik típusú szolgáltatása a SonarQube egy lehetséges futtatási módjának biztosítására.

@klenium
Copy link
Owner Author

klenium commented Apr 11, 2019

Egyelőre sikertelen:

[ERROR] Failed to execute goal org.sonarsource.scanner.maven:sonar-maven-plugin:3.6.0.1398:sonar (default-cli) on project tetris: You're not authorized to run analysis. Please contact the project administrator.

@klenium
Copy link
Owner Author

klenium commented Apr 11, 2019

Ellentétben a GitHub kulccsal, a SonarCould-ét nem kell külön kódolni a Travis parancssori programjával, ha nem a .travis.yml fájlba teszem, hanem a projekt beállításainál adom meg változóként...

Javítva a kódot már lefut a parancs, és elérhető lett a SonadCould oldalán, ami publikusan, bejelentkezés nélkül megtekinthető, így lehet hivatkozni az ottani adatokra.

@klenium
Copy link
Owner Author

klenium commented Apr 12, 2019

Code smell-ek áttekintése:

A módosítások miatt az egységtesztek lefedettsége kissé romlott, már csak 53.8%-os.

@klenium
Copy link
Owner Author

klenium commented Apr 12, 2019

A részfeladat elkészült, összefoglaló a Wikin.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant