How to use codemetrics to improvequalityChristian TraboldTYPO3 Conference 2011
Agenda What started one year ago What we improved What makes metrics sexy Questions & Answers
Downloads & Feedback Links and further information on http://www.delicious.com/christian_trabold/t3con11 Listening to you on twitter #t3con11-qatalk Ask! It‘s okay to ask after the talk :) Meet me! At the dkd booth!
About me Christian Trabold Senior Developer Web since 1999 TYPO3 since 2004 dkd since 2006 Focus on quality assurance Maintainer of ci.typo3.org Author of TYPO3 Kochbuch, O‘Reilly E-Mail firstname.lastname@example.org Twitter @ctrabold
What started one year ago ci.typo3.org 5Why? Personal itchWe spent far too much time on looking on bad code.
Provide metrics forevery TYPO3 extension http://www. ickr.com/photos/ uzo/97673183/
Our intention We want to improve everyday life of an TYPO3 developer … while developing extensions. … while integrating extensions. … while publishing extensions.We need to find good extensionsdeveloping = constructive feedbackintegrating = now flaws befor they find youpublishing = meet the users
Meet the Tools typo3.org me tric s.ty ci.typo3.org po3 .or g metrics.typo3.org ci.t ypo 3.o rg TE RNow we have these components:
typo3.org - The repository Reliable repository Details for more than 5000 extensions Provides Data for ci.typo3.org TE R
ci.typo3.org - The worker Runs analyses over and over again Generates data for metrics Triggered by new releases ci.t ypo 3.o rg TE RWe created ci.typo3.orgto aggregate technical informationwhich is not available within TER.
Crawling code for every exension in TER…We had to ﬁx some performance issuesNow ci.typo3.org runs smoothly and provides information on each new extensionrelease.
The GUI gets complex really fast.And we do have a problemwhich we share with the TER.
A lot of information - no good user interface.
We love Jenkins, but… Jenkins is a wonderful tool, but implementing a cool GUI can get quite cumbersome Reason: complex GUI, not sexy enough Frankly the whole mission didnt workout the way we expected.There must be a better way for displaying Metrics!Use a specialized tool for the job // Use the tools for what they are intendedSo we took a look around: SonarJenkins = worker -> Sonar = dashboard
Sonar (sonarsource.org) Displays metrics nicely Provides tons of graphs Allows deeper code analysis me tric s.ty po3 .or g Running on ci.t ypo 3.o rg metrics.typo3.org TE RSonarSource = OpenSourceLooked good at the ﬁrst sight, then I gave it a try - Now I love it!If you have questions about sonar:Olivier Gaudin (CEO and Founder of SonarSource)is speaking at the TYPO3 conference right after my talk in Room C.http://t3con11-frankfurt.typo3.org/sessions/acceptedpapers/paper/continuous_inspection.html
Usecase: We need to evaluate extensions A LOT.Important: Find potential problems as early as possible.Screencast:Go to ci.typo3.org (Search on metrics.typo3.org is broken)Find extensionkey through searchOpen detailsClick "Sonar" linkBrowse metrics
New challenge: Search extensionsSo, now we have- the tools to evaluate extensions- the metrics to see quality of extensionsBut, we still cant ﬁnd them easily…
A typical use case I want an extension to search content which is written against TYPO3 CGL and has a manual and it should be an Extbase extensionIn technical terms this means...
Search parameters I want an frontend plugin which has < 30% violations and has a le doc/manual.sxw and it depends on EXT:extbase Currently NOT possible on typo3.orgAll these parameters are already available
Re-Think „Search“ We need a new search badly. Why not combine powerful metrics with a powerful search? Here are some ideas.As some of you know:dkd has quite some experience with "Search"
The complete application stack me tric s.ty po3 .or g Sec ci.t uri ypo ty Bu 3.o llet rg ins Us er F TE eed R bac k SearchSearch combines all toolslinks to metrics & makes metrics searchable
This is just a beginning Get noti cations on new extensions meeting your search criteria Build a semantic view of TYPO3 ecosystem Valuable feedback & donations for developers Make awesome TYPO3 community visible
New perspectivesExample based on https://github.com/skurfuerst/ter-rdf-schema
See the connecting dotsExample based on http://mbostock.github.com/d3/
Very important Provide a sane ext_emconf.php for your extension. Update dependencies & con icts Update required TYPO3 & PHP versionsWe have these extension settings since ages!Use them!They are cucial for a better TER.
Managing input + output for TER content me tric s.ty po3 .or g Sec ci.t uri ypo ty Bu 3.o llet rg ins Us er F TE eed R bac k SearchIts managing the TER I/O.So lets call it...