Sonar platform

800 views

Published on

Μία σύντομη παρουσίαση για την πλατφόρμα του Sonar ( http://www.sonarsource.org ) και τους 7 βασικούς άξονες ποιότητας

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
800
On SlideShare
0
From Embeds
0
Number of Embeds
52
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Sonar platform

  1. 1. Sonar@Origin Platform• Ειςαγωγό – Τι εύναι το Sonar;• Τι κϊνει και πωσ λειτουργεύ;• Γιατύ Sonar;• Πωσ αναλύουμε ϋνα project;• Οι 7 ϊξονεσ τησ ποιότητασ• Οι βαςικϋσ Μετρικϋσ και οι ςημαςύα τουσ OTS SA, 2012 © Παπαπϋτρου Πϊτροκλοσ
  2. 2. Sonar and me…• Ενεργό μϋλοσ των user και developer mailing lists• Κύριοσ contributor / release manager ςτα παρακϊτωPlugins • SCM Stats • Google Calendar • Thucydides • Greek Pack ( Localization )• Contributor των παρακϊτω Plugins • Widget Lab • Branding • Scala (Support for Scala source code analysis)• Co-Author του βιβλύου Sonar in Action• Co-Author του DZone Sonar refcard - TBD OTS SA, 2012 © Παπαπϋτρου Πϊτροκλοσ
  3. 3. Ειςαγωγό – Τι εύναι το Sonar;• Open Source “code quality platform”• Εκατοντϊδεσ Μετρικϋσ τησ τρϋχουςα εικόνασενόσ project• Τόρηςη ιςτορικού και ςύγκριςη προόδου• Τϊςεισ και Μελλοντικϋσ προβλϋψεισ• Εργαλεύα για βελτύωςη τησ ποιότητασ OTS SA, 2012 © Παπαπϋτρου Πϊτροκλοσ
  4. 4. Ειςαγωγό – Τι κϊνει το Sonar;• «Διαβϊζει» και αναλύει τον πηγαύο κώδικα• Υπολογύζει τισ τιμϋσ των μετρικών• Καταγρϊφει τισ μετρικϋσ για το ςτιγμιότυπο (snapshot ) τησ ανϊλυςησ• Προβϊλλει τα αποτελϋςματα μϋςω widgets ςεdashboards. OTS SA, 2012 © Παπαπϋτρου Πϊτροκλοσ
  5. 5. Sonar για όλουσ …Για τουσ testers => Ποια τμόματα του λογιςμικούδεν ϋχουν επϊρκεια ςε Testing;Για τουσ developers => Τι «προβλόματα» ϋχει οκώδικϊσ και πωσ μπορεύ να βελτιωθεύ;Για τουσ architects => Το αρχικό design ϋχειαρχύςει να «χαλϊει»; Τι γύνεται με τηνπολυπλοκότητα;Για τουσ managers => Δώςτε μου μετρικϋσ καιποιεσ από αυτϋσ βελτιώθηκαν / χειροτϋρεψαν! OTS SA, 2012 © Παπαπϋτρου Πϊτροκλοσ
  6. 6. … και για όλα• Αρχικϊ : Υποςτόριξη μόνο Java και 2-3 ϊλλεσγλώςςεσ.• Σόμερα : Πϊνω από 20 γλώςςεσ μϋςω Plugins Commercial : ABAP, C , Cobol, Natural, PL/SQL, Visual Basic Open Source : C++ , C#, Delphi, Drools, Flex, Groovy, Javascript, PHP, Python, XML , Web(xhtml, jsp , jsf, ) OTS SA, 2012 © Παπαπϋτρου Πϊτροκλοσ
  7. 7. Βαςιςμϋνο ςε γνωςτϊ εργαλεύα• Static Analysis : PMD, FindBugs, CheckStyle• Code Coverage Tools: JaCoCo, Cobertura,Emma, coverage.py• Unit Test execution : Junit, PHPUnit, Nunit ,JsTestDriver• Complexity : PHP_Depend, Cecil• Duplications : Embedded Mechanism , CPD OTS SA, 2012 © Παπαπϋτρου Πϊτροκλοσ
  8. 8. Πωσ αναλύουμε ϋνα project• Sonar Runner : Ο προτεινόμενοσ τρόποσ – Γιακϊθε εύδουσ project και πηγαύο κώδικα• Maven: Μόνο για Java Maven projects• Sonar Ant Task : Μόνο για χρόςη ςε Ant buildscripts• Continuous Integration Engine :Hudson/Jenkins, Bamboo κ.α. OTS SA, 2012 © Παπαπϋτρου Πϊτροκλοσ
  9. 9. Οι 7 ϊξονεσ τησ ποιότητασ• Πιθανϊ ςφϊλματα κώδικα• Διπλόσ κώδικασ• Unit Tests• Coding Rules• Πολυπλοκότητα• Τεκμηρύωςη και Σχόλια• Σχεδύαςη και Αρχιτεκτονικό OTS SA, 2012 © Παπαπϋτρου Πϊτροκλοσ
  10. 10. Η ϋννοια του Tehcnical Debt• Τι εύναι ; Το ςυνολικό και αυξανόμενο κόςτοσβελτύωςησ πρόχειρου ό κακογραμμϋνου κώδικα (refactoring )• Όλα τα projects ϋχουν Technical Debt• Δεν εύναι απαραύτητα κακό, αρκεύ να μη ξεφύγει (όπωσκαι η χρϋωςη ςτισ πιςτωτικϋσ κϊρτεσ και τα δϊνεια) OTS SA, 2012 © Παπαπϋτρου Πϊτροκλοσ
  11. 11. Violations & Coding Rules• Violation = Broken Coding Rule• Γιατύ εύναι ςημαντικϋσ; Τι υποδηλώνουν; • Σύγουρα ςφϊλματα • Πιθανϊ ςφϊλματα, • Ενδεύξεισ για ανθρώπινα λϊθη • Καταςτϊςεισ που μπορεύ να οδηγόςουν ςε ανθρώπινα λϊθη ςτο μϋλλον • Μη αποδοτικό κώδικα (φιλικό ςε μνόμη & resources) • Στιλιςτικϋσ ατϋλειεσ OTS SA, 2012 © Παπαπϋτρου Πϊτροκλοσ
  12. 12. Violations & Coding Rules (Metrics)• Βαςικϋσ μετρικϋσ • Πλόθοσ violations ςε κϊθε κατηγορύα • Συμμόρφωςη ςε κανόνεσ (ςε ποςοςτό) OTS SA, 2012 © Παπαπϋτρου Πϊτροκλοσ
  13. 13. Διπλόσ Κώδικασ• Πωσ δημιουργεύται; • Έλλειψη χρόνου – ςτενϊ χρονοδιαγρϊμματα • Φτωχό επικοινωνύα εντόσ τησ ομϊδασ ανϊπτυξησ • Μη κατανόηςη του domain, του προβλόματοσ προσ επύλυςη, του ύδιου του κώδικα • Projects merging • Πληρωμό για κϊθε γραμμό κώδικα OTS SA, 2012 © Παπαπϋτρου Πϊτροκλοσ
  14. 14. Διπλόσ Κώδικασ (Metrics)• Βαςικϋσ Μετρικϋσ • Ποςοςτό διπλού κώδικα • Πλόθοσ διπλών γραμμών • Πλόθοσ code blocks με διπλό κώδικα • Πλόθοσ αρχεύων με διπλό κώδικα• Δευτερεύουςεσ μετρικϋσ (από plugins) • Διπλϋσ γραμμϋσ που μπορούν να αφαιρεθούν OTS SA, 2012 © Παπαπϋτρου Πϊτροκλοσ
  15. 15. Test Coverage• Unit Testing : Σενϊρια ελϋγχου ςε επύπεδομονϊδασ (JUnit , TestNG, NUnit κτλ.• Integration Testing : Σενϊρια ελϋγχου ςεεπύπεδο ολοκλόρωςησ (DBUnit , JSFUnit,Arquillian, Selenium etc. )• Code Coverage Tools : JaCoCo ( default ),Covertura, Emma OTS SA, 2012 © Παπαπϋτρου Πϊτροκλοσ
  16. 16. Test Coverage (Metrics)• Κϊλυψη • Συνολικό κϊλυψη από Tests • Κϊλυψη γραμμών από Tests (Line Coverage) • Κϊλυψη διακλαδώςεων από Tests(Branch Coverage)• Επιτυχύα Ελϋγχων • Ποςοςτό •Πλόθοσ αποτυχιών, λαθών, ελϋγχων •Διϊρκεια εκτϋλεςησ OTS SA, 2012 © Παπαπϋτρου Πϊτροκλοσ
  17. 17. Πολυπλοκότητα• Σε επύπεδο κλϊςησ / αρχεύο • Lack of Cohesion of Methods – LCOM4 (Καλό να παραμϋνει ύςο με ϋνα) • Response for Class – RFC ( Όςο το δυνατόν χαμηλότερη - Μϋχρι 50 θεωρεύται αποδεκτό ) • Afferent / Efferent couplings (Εξαρτόςεισ από και προσ ϊλλεσ κλϊςεισ ) • Cyclomatic Complexity (MaCaBe Metric ) • Υπολογύζεται για μϋθοδο, για κλϊςη, για αρχεύο • Πωσ υπολογύζεται; OTS SA, 2012 © Παπαπϋτρου Πϊτροκλοσ
  18. 18. Πολυπλοκότητα (πωσ επηρεϊζει) Πολύπλοκοσ Κώδικασ Πύεςη Δυςκολύα χρόνου κατανόηςησ κώδικα Επιβρϊδυνςη Δυςκολύα παραγωγικότητασ ςυντόρηςησ Ευκολύα ςτη δημιουργύα Δυςκολύα bugs επϋκταςησ OTS SA, 2012 © Παπαπϋτρου Πϊτροκλοσ
  19. 19. Πολυπλοκότητα (Metrics) OTS SA, 2012 © Παπαπϋτρου Πϊτροκλοσ
  20. 20. Σχεδύαςη / Αρχιτεκτονικό•Ασ ςταματόςουμε το ςκυλύ να κυνηγϊει τηνουρϊ του • Κύκλοι εξαρτόςεων μεταξύ κλϊςεων ό πακϋτων• Πόςο κακό κϊνουν;• Μπορούν να εξαλειφθούν τελεύωσ; OTS SA, 2012 © Παπαπϋτρου Πϊτροκλοσ
  21. 21. Σχεδύαςη / Αρχιτεκτονικό OTS SA, 2012 © Παπαπϋτρου Πϊτροκλοσ
  22. 22. Σχεδύαςη / Αρχιτεκτονικό (Μετρικϋσ)• Κύκλοι • Ποςοςτό κύκλων • Πλόθοσ κύκλων• Εξαρτόςεισ που μπορούν να αφαιρεθούν • Μεταξύ πακϋτων • Μεταξύ κλϊςεων OTS SA, 2012 © Παπαπϋτρου Πϊτροκλοσ
  23. 23. Τεκμηρύωςη / Σχόλια• Το παρα-παύδι τησ ποιότητασ • από τουσ developers και όχι μόνο• Που βοηθϊει • ςτην διευκόλυνςη τησ ςυντόρηςησ • ςτη χρόςη API χωρύσ την ανϊγκη μελϋτησ κώδικα • ςτην εξόγηςη του «τι» και του «γιατύ» όχι του «πωσ» ςε μεθόδουσ ό κλϊςεισ• Προςοχό όμωσ : Clean Code overCommenting OTS SA, 2012 © Παπαπϋτρου Πϊτροκλοσ
  24. 24. Τεκμηρύωςη / Σχόλια (Μετρικϋσ)• Σχόλια • Ποςοςτό ςχολύων ( No silver bullet ) • Πλόθοσ γραμμών ςε ςχόλια• Τεκμηρύωςη (Java Doc) • Ποςοςτό τεκμηριωμϋνου API • Πλόθοσ δημόςιου API • Πλόθοσ δημόςιου API χωρύσ τεκμηρύωςη OTS SA, 2012 © Παπαπϋτρου Πϊτροκλοσ

×