Saturday, June 4, 2011

5+1 Sonar Plugins you must NOT miss

Sonar, to my humble opinion, is the leading system to help developer teams track,manage and eventually enhance the overall quality of their code and obviously their software products/projects. To be honest, this is not a post to describe either Sonar features or the necessity of a tool for every developer that respect his time and efforts. If you want to read such analysis you can see my related post To Sonar or Not to Sonar. In this article I briefly present 5+1 plugins that every Sonar Installation should have them. I would like to clarify though some exceptions I have made prior to my final choice. I have excluded all plugins that have to do with additional languages and IDE to keep this post as much as objective I can. I have also excluded all commercial plugins for obvious reasons. After that assumptions I have limited my selections to the following categories : 
  • Additional Metrics
  • Governance
  • Integration
  • Visualization / Reporting
Sonar itself comes with a variety of features that cover most of the needs of a software development team. However I consider that the following plugins are essential, especially for those that have adapted or trying to adapt agile practices. To be honest it was very difficult to select only 6 plugins!!

1.Hudson / Jenkins plugin
Although Sonar analysis can be easily triggered from several build tools (maven, ant etc.) I strongly believe that its native integration with the most famous open source CI server makes itself an important part of the continuous integration / deployment practice. The configuration is extremely easy and as proposed the best practice is to trigger Sonar at night builds. Team members can track day by day software quality, automatically, without bothering when a new analysis should run.

2.Jacoco Plugin
Unit Test results, with drill down analysis, line and branch coverage, running and failed tests are features implemented in Sonar core and cover in depth all aspects of unit testing practice. But, as there is always a 'but', what about Integration tests? What if we want to have separated measures about unit and integration tests? Here comes JaCoCo plugin to save our time and money. Although JaCoCo is an alternative to Cobertura (default Sonar coverage tool ), it may be properly configured to display metrics only for Integration Tests. There is a great article that explains in details how we can use it and get the same analysis ( as for Unit Tests ) for Integration Tests.

3.Useless Code Plugin
It may looks similar to the Sonar Core feature named Duplicate Code, but it adds some more metrics, which I think are very useful especially for large or legacy systems. In general it measures how many lines can be removed from your code. It reports what is the number of unused private methods that can be safely removed and the number of unused protected methods exist in the code that can be removed after some more careful code examination. Finally it provides some more details about code duplication informing how duplicate lines are formed (i.e. x blocks of y lines )

4.SIG Maintainability Model Plugin
This plugin, as its name implies is an implementation of the Software Improvement Group(SIG) Maintainability Model. It reports ranking - from -- :(very bad) to ++ (very good) on the following base indicators:Analysability, Changeability, Stability and Testability. The core idea for this ranking is to measure a series of base metrics such as Lines of Code(LOC), Duplications,Unit Tests,Complexity and Unit Size. Each of these metrics is then accounted into some of the mentioned indicators and the final result is representing the overall maintainability of the project. We can see the results of this analysis in a graphical (spider) presentation with all four axes of the model. With a glance a this graph you have a global and detailed at the same time view of how easy is to change and maintain your codebase. For me it is the first index I check every morning and if something is not + or ++ then we definitely have done something wrong ;-)

5.Quality Index Plugin
Have you ever wanted to check a single number (indicator) and understand how healthy is your project? I am sure you have!! Well, the quality Index plugin is exactly what you are looking for. The plugin combines four weighted axes (complexity, coding violations, style violations, test coverage) of quality and produces a ranking between 0 (lowest) and 10(highest). Moreover it calculates a method complexity factor based on the complexity factor mentioned above. Have you ever tried to get a ranking of 10 with this plugin? I think it worths the effort! :-)

6.Technical Debt Plugin
Last, but not least, the plugin that reports about the interest you have to pay as a developer, as a team, as a company. Technical debt is a term invented by Ward Cunningham to remind us that if we don't pay our interest from time to time, then it is for sure that eventually this will make our software unmaintainable and hard to add new features or even find the root cause of defect. The plugin, which has a very powerful configuration, represents technical debt in four dimensions.
  • Debt Ratio : The percentage of current technical debt to the maximum possible technical debt.
  • Cost to reimburse : Cost in your currency to pay all interest and clean up your code
  • Work to reimburse : Same as above measured in man days.
  • Breakdown : Distribution to the following axes: Duplication, Violations, Complexity, Coverage, Documentation and Design
Be sure that you check its measures to avoid find yourself in bad situation like spaghetti code :-)

I am pretty sure that there are plenty of interesting Sonar plugins so please feel free to post your comments with your list of them.

Friday, June 3, 2011

Εκπληκτική απάντηση Έλληνα σε Γερμανό που έστειλε ειρωνική επιστολή για τα χρέη μας

Απίστευτος διάλογος στο γερμανικό περιοδικό Stern
Η παρακάτω ανοιχτή επιστολή του Walτer Wuellenweber, προς τους Έλληνες πολίτες...
με τίτλο «Αγαπητοί μας Έλληνες», δημοσιεύεται σε πρόσφατο τεύχος του γερμανικού εβδομαδιαίου περιοδικού, Stern. Ο υπέρτιτλος του άρθρου αναφέρει:
«Μετά τις τράπεζες, θα πρέπει τώρα οι Γερμανοί να σώσουν και την Ελλάδα. Πρώτα έκαναν αλχημείες οι Έλληνες στο ευρώ και τώρα, αντί να κάνουν οικονομίες, απεργούν».

Αγαπητοί ΕΛΛΗΝΕΣ, από το 1981 ανήκουμε στην ίδια οικογένεια. Μόνο που εμείς έχουμε συνεισφέρει, όσο κανείς άλλος στο κοινό ταμείο, δηλαδή γύρω στα 200 δις, ενώ εσείς έχετε, αντίθετα, εισπράξει κατά κεφαλήν, όσα κανείς άλλος, δηλαδή σχεδόν 100 δις. Ουδέποτε λαός βοήθησε μέχρι τώρα με τη θέλησή του, σε τέτοιο βαθμό, και για τόσο μακρύ διάστημα, άλλον λαό. Είσαστε, κυριολεκτικά, οι πιο ακριβοί μας φίλοι.

Το ζήτημα πάντως είναι, ότι τελικά δεν εξαπατάτε μόνο τον εαυτό σας αλλά κι' εμάς. Στην ουσία, ουδέποτε φανήκατε αντάξιοι του ευρώ, μιας και παρά την εισαγωγή του, δεν καταφέρατε μέχρι τώρα να εκπληρώσετε τα κριτήρια σταθερότητας. Στην ΕΕ είσαστε ο λαός που ξοδεύει τα μεγαλύτερα ποσά σε καταναλωτικά αγαθά. Θα θέλαμε, ο πρωθυπουργός σας Γ. Παπανδρέου να προχωρήσει στο πρόγραμμά του, όμως προφανώς αυτό δεν το θέλετε εσείς, αφού συνεχίζετε απτόητοι, ν' απεργείτε. Μη μας λέτε λοιπόν, ότι μόνο οι πολιτικοί ευθύνονται για την καταστροφή.

Εσείς έχετε εφεύρει τη Δημοκρατία κι ως εκ τούτου θα πρέπει να γνωρίζετε, ότι ο λαός είναι αυτός που κυβερνά κι επομένως, έχει και την ευθύνη. Κανείς δεν σας αναγκάζει να φοροδιαφεύγετε, να χρηματίζεστε, ν' αντιδράτε σε κάθε συνετή πολιτική και να εκλέγετε διεφθαρμένους πολιτικούς. Σε τελευταία ανάλυση, οι πολιτικοί είναι λαϊκιστές και κάνουν, ότι τους πει ο λαός. Θα μας πείτε, βεβαίως, ότι κι εμείς οι Γερμανοί δεν είμαστε πολύ καλύτεροι, όπως θέλουν κάποιοι να πιστεύουν. Κι έχετε δίκιο.

Οι Έλληνες είναι εκείνοι, που μας είχαν δείξει το δρόμο της Δημοκρατίας και της Φιλοσοφίας, καθώς και τις πρώτες γνώσεις Εθνικής Οικονομίας. Τώρα μας δείχνετε και πάλι το δρόμο. Μόνο που αυτή τη φορά, είναι λάθος δρόμος. Κι από το σημείο που εσείς έχετε τώρα φτάσει, δεν πάει παραπέρα.

Και η απάντηση που δόθηκε από ένα συμπατριώτη μας:
Αγαπητέ μου Walτer Wuellenweber, ονομάζομαι Γεώργιος Π. Ψωμάς. Είμαι δημόσιος λειτουργός κι όχι υπάλληλος, όπως κατά κόρον τα ΜΜΕ των «συμπατριωτών» σου (μου) και άλλων «συμπατριωτών» σου (μου) αναφέρουν, ως βρισιά και με περίσσεια χλεύη. Ο μισθός μου είναι 1.000. Το μήνα, όχι την ημέρα, όπως ίσως σ' έχουν παρασύρει, να νομίζεις. Ούτε 1.000 λιγότερα από σένα.

Από το 1981 ανήκουμε στην ίδια οικογένεια. Μόνο που σας έχουμε παραχωρήσει με αδιαφανείς όρους κι' έναντι αυτών των 200 δις που λέτε, ότι μας δώσατε, το 40% περίπου των αμυντικών εξοπλισμών μας, το σύνολο σχεδόν των εθνικών τηλεπικοινωνιών μας, την κατασκευή 2 μεγάλων αεροδρομίων καθώς και πολλών χιλιομέτρων εθνικού οδικού δικτύου. Αν ξεχνώ κάτι, ζητώ να με συγχωρέσεις. Σημειώνω, πως είμαστε από τους μεγαλύτερους εισαγωγείς στα καταναλωτικά προϊόντα που παράγουν τα εργοστάσιά σας.

Η αλήθεια είναι, πως δεν ευθύνονται μόνο οι πολιτικοί μας γι' αυτή την καταστροφή. Ένα μεγάλο μέρος της ευθύνης έχει και μια εταιρία γερμανικών κυρίως συμφερόντων, η οποία τους λάδωνε, για ν' αναλαμβάνει, όπως λέω παραπάνω, δημόσια έργα (βλ. C4Ι). Πιθανολογώ, πως φταίνε και τα γερμανικά ναυπηγεία, τα οποία μας πούλησαν κάτι υποβρύχια, που γέρνουν. Είμαι σίγουρος, ότι εσύ δεν με πιστεύεις ακόμα, αλλά δείξε λίγο υπομονή και περίμενε, διάβασέ με, κι αν δεν σε πείσω, τότε διώξε με από την Ευρωζώνη, τον τόπο της Αλήθειας και της Ευημερίας, του Δίκαιου και του Σωστού.

Λοιπόν Walτer, μισός αιώνας και πάνω πέρασε από τη λήξη του Β΄ Παγκοσμίου Πολέμου, από τότε που η Γερμανία έπρεπε να ξοφλήσει τις υποχρεώσεις της προς την Ελλάδα. Οι οφειλές αυτές, που μόνον η Γερμανία αρνείται να ξοφλήσει στην Ελλάδα (η Βουλγαρία και η Ρουμανία, τακτοποίησαν ήδη τις αντίστοιχες υποχρεώσεις τους), συνίστανται:

α) Σε χρέη ύψους 80 εκατομμυρίων γερμανικών μάρκων, από τον Α΄ Παγκόσμιο Πόλεμο.
β) Σε χρέη από τη διαφορά του κλήριγκ στο μεσοπόλεμο, ύψους 593.873.000 δολαρίων, που ήταν σε βάρος της Γερμανίας.

γ) Στα αναγκαστικά δάνεια, τα οποία συνήψε το Γ΄ Ράιχ από την Ελλάδα, ύψους 3,5 δισεκατομμυρίων δολαρίων, στη διάρκεια της κατοχής.

δ) Στις επανορθώσεις, που οφείλει η Γερμανία στην Ελλάδα, για τις κατασχέσεις, αρπαγές και καταστροφές, που της προξένησε το Γ' Ράιχ, την περίοδο της κατοχής, ύψους 7,1 δισεκατομμυρίων δολαρίων, όπως επεδίκασαν οι Σύμμαχοι.

ε) Στις ανυπολόγιστες υποχρεώσεις της Γερμανίας για την αφαίρεση της ζωής 1.125.960 Ελλήνων (38.960 εκτελεσμένων, 12.000 νεκρών από αδέσποτες, 70.000 σκοτωμένων σε μάχες, 105.000 νεκρών στα στρατόπεδα της Γερμανίας, 600.000 νεκρών από πείνα και 300.000 απωλειών από υπογεννητικότητα).

στ) Στην ατίμητη ηθική προσβολή, που προξένησε στον ελληνικό λαό και στις ανθρωπιστικές ιδέες που εκφράζει η ελληνική ιδέα. Αυτό το πρόβλημα δεν είναι οικονομικό, είναι ηθικής τάξης, ύψιστης ηθικής αξίας.

Ξέρω Walτer, σε πειράζουν αυτά που γράφω, αλλά και μένα με πείραξαν, αυτά που έγραψες! Αλλά περισσότερο με πειράζουν, αυτά που σκέφτεσαι και θέλεις να κάνεις για μένα και τους «συμπατριώτες» σου, τους Έλληνες !

Walτer, φίλτατε Walτer, στην Ελλάδα δραστηριοποιούνται 130 γερμανικές επιχειρήσεις, στις οποίες, περιλαμβάνονται σχεδόν όλοι οι γερμανικοί κολοσσοί, οι οποίες πραγματοποιούν ετήσιο τζίρο της τάξης των 6,5 δισ. ευρώ.

Ξέρεις Walτer, σύντομα δε θα μπορώ ν' αγοράζω Γερμανικά προϊόντα, γιατί δεν θά έχω λεφτά. Εγώ Walτer μεγάλωσα στα λίγα, θα τ' αντέξω. Και μην ανησυχείς για τους νέους στην Ελλάδα, είμαστε ακόμα πολλοί παλιοί, για να τους βοηθήσουμε, να εξοικειωθούν στη νέα κατάσταση. Αλλά εσείς βρε Walτer, τους ανέργους σας, που θα δημιουργηθούν από την κατάσταση αυτή στην Ελλάδα, πως θα τους αντιμετωπίσετε;

Πες μου σε παρακαλώ, έχω απορία: Εμείς οι Έλληνες πρέπει να φύγουμε από την Ευρώπη, την Ευρωζώνη (κι απ' όπου αλλού θέλετε, εσείς, οι Γερμανοί, οι Σουηδοί, οι Ολλανδοί και λοιποί «συμπατριώτες). Πρέπει να φύγουμε, για να σωθούμε από μια Ένωση, κατ' επίφαση. Από μια ομάδα κερδοσκόπων. Από μια ομάδα, στην οποία είμαστε συμπαίκτες, όσο καταναλώναμε τα προϊόντα των συμπαικτών!

Εγώ φίλτατε Walτer, πιστεύω, ότι οι Έλληνες θα πρέπει να σταματήσουν ν' αγοράζουν Mercedes, BMW, Opel, Ford, Scoda, κλπ. συμμαχικά προϊόντα, γιατί, δεν μπορούν και δεν πρέπει! Δεν το αξίζουν. Θα πρέπει να σταματήσουν ν' αγοράζουν προϊόντα από το Lidl, το Praktiker και το IKEA. Γιατί δε θα μπορούν πια να τ' αγοράσουν αυτά τα προϊόντα, βρε αδερφέ, τι να κάνουμε!
Φίλτατε Walτer, θα πρέπει να κανονίσουμε και κάποιες άλλες «λεπτομέρειες» . αν μου επιτρέπεις βέβαια, γιατί εσύ είσαι ο «πιστωτής» της ζωής μου. Ξέρεις βρε φίλε Walτer, θέλω να μου επιστρέψεις τον ΠΟΛΙΤΙΣΜΟ μου, που έκλεψες εσύ (όχι ΕΣΥ βεβαίως, αλλά κάποιοι ΔΙΚΟΙ ΣΟΥ), θέλω τα ΑΘΑΝΑΤΑ ΔΗΜΙΟΥΡΓΗΜΑΤΑ ΤΩΝ ΠΡΟΓΟΝΩΝ ΜΟΥ, που βρίσκονται στα Μουσεία του Βερολίνου, του Μονάχου, του Λονδίνου, του Παρισιού, της Ρώμης! Τα θέλω τώρα, που μπορεί να πεθάνω, αλλά θέλω να πεθάνω, κοντά στους πατέρες μου!