Codequalität messen (enterJS 2014)

  • View
    603

  • Download
    1

Embed Size (px)

DESCRIPTION

German talk. Hold at the enterJS 2014 in Cologne at 1st July 2014 (11:40 - 12:25) German description: Bei gesetzten Sprachen wie Java, C und PHP gehren Tools zum Messen von Kennzahlen zur Bestimmung der Qualitt von Software zum Alltag. Fr JavaScript ist das noch ein recht neuer Bereich. Besonders in modernen Webprojekten ist eine Charakterisierung der Software in Bezug auf Qualittskennzahlen allerdings ein wichtiger Faktor hinsichtlich der Entwicklungs- und Ausfhrungsgeschwindigkeit sowie der Stabilitt. Dieser Vortrag gibt eine Einfhrung in Metriken, wie sie sich erfassen und fr die tgliche Arbeit nutzen lassen.

Transcript

  • 1. Codequalitt messen EnterJS, 01. Juli 2014

2. Andy Grunwald Software Engineer bei @trivago Open Source @andygrunwald @PHPUGDus andygrunwald 3. Code | qualitt | messen 4. Helmut Balzert Unter Softwarequalitt versteht man die Gesamtheit der Merkmale eines Softwareprodukts, , festgelegte oder vorausgesetzte Erfordernisse zu erfllen. 5. (Software)-Metriken 6. Frontend HTTP Requests Navigation Timing DOM Elemente Browser Repaints Backend Request-Zeit Cache-Miss / -Hits Ressource-Zeit Business-Logik Source Code 7. Source Code Functions count Nested depth Halstead Maintainability index LOC Parameter count Cyclomatic Complexity nPath Lint errors CLOC LLOC Your metric here 8. Source Code Functions count Nested depth Halstead Maintainability index LOC Parameter count Cyclomatic Complexity nPath Lint errors CLOC LLOC Your metric here 9. _.isEmpty(e); 10. _.isEmpty(e); LOC: 19 11. _.isEmpty(e); LOC: 19 CLOC: 2 12. _.isEmpty(e); LOC: 19 CLOC: 2 NCLOC: 17 13. _.isEmpty(e); LOC: 19 CLOC: 2 NCLOC: 17 LLOC: 9 14. Source Code Functions count Nested depth Halstead Maintainability index LOC Parameter count Cyclomatic Complexity nPath Lint errors CLOC LLOC Your metric here 15. Source Code Functions count Nested depth Halstead Maintainability index LOC Parameter count Cyclomatic Complexity nPath Lint errors CLOC LLOC Your metric here 16. Cyclomatic Complexity / McCabe Anzahl von Entscheidungspunkten innerhalb einer Funktion (if, switch, for, while, ) 17. Cyclomatic Complexity: 4 18. nPath Complexity Anzahl einzigartiger Ausfhrungspfade innerhalb einer Funktion 19. nPath Complexity: 4 20. Cyclomatic Complexity === nPath? 21. Cyclomatic Complexity: 4 22. nPath Complexity: 8 23. escomplex complexity-report plato Esprima yardstick jsmeter 24. ScanJS JSHint jsprime DoctorJs JSWhiz WALA 25. + 26. Sprach-Features 27. JavaScript ist eine dynamische Sprache 28. Referenzwerte / Schwellenwerte + Kontext 29. Referenzwerte / Schwellenwerte Niedrig Normal Hoch Sehr hoch Cyclomatic Complexity 1-4 5-7 8-10 >= 11 nPath / / / >= 200 30. Java (45 Projekte) Metrik Niedrig Normal Hoch Sehr hoch CYCLO/LOC 0.16 0.20 0.24 0.36 LOC/Methode 7 10 13 19.5 NOM/Class 4 7 10 15 C++ (37 Projekte) Metrik Niedrig Normal Hoch Sehr hoch CYCLO/LOC 0.20 0.25 0.30 0.45 LOC/Methode 5 10 16 24 NOM/Class 4 9 15 22.5 31. Metriken 32. Source Code Functions count Nested depth Halstead Maintainability index LOC Parameter count Cyclomatic Complexity nPath Lint errors CLOC LLOC Your metric here 33. Verwendete Bilder Ruler by Scott Akerman: https://www.flickr.com/photos/sterlic/4299631538/ the JavaScript Code by Dmitry Baranovskiy: https://www.flickr.com/photos/dmitry- baranovskiy/2378867408 Ignition by Zach Dischner: https://www.flickr.com/photos/zachd1_618/3489625168 Tools IMG_0171 by OZinOH: https://www.flickr.com/photos/75905404@N00/7126146 307 34. Verwendete Bilder Danger & Skull, Legoland by bixentro: https://www.flickr.com/photos/bixentro/338433029 Baby by The Noun Project: http://thenounproject.com/term/baby/47/ Man by The Noun Project: http://thenounproject.com/term/man/2/ Sasquatch by Mike Wirth: http://thenounproject.com/term/sasquatch/2680/ 35. Verwendete Bilder Waking Up In Abbeyford Woods by Miles Wolstenholme: https://www.flickr.com/photos/oaktorphotography/14444 806464 Danke 102/365 by Dennis Skley: https://www.flickr.com/photos/dskley/13796815083/ Questions by Oberazzi: https://www.flickr.com/photos/oberazzi/318947873/in/ph otostream/ 36. Zitate und Tabellen Helmut Balzert: Lehrbuch der Softwaretechnik. Band 2: Softwaremanagement, Software-Qualittssicherung, Unternehmensmodellierung, Spektrum Akademischer Verlag, Heidelberg 1998, ISBN 3-8274-0065-1, S. 257 Michele Lanza, Radu Marinescu: Object-Oriented Metrics in Practice: Using Software Metrics to Characterize, Evaluate, and Improve the Design of Object-Oriented Systems, Springer 2006, ISBN 3540244298