Geplaatst op 29 January 2010, 11:49 door Mylène Reiners
in java, open source
Er is al verschillende malen over Checkstyle geschreven op deze blog. Over hoe nuttig het is, wat het allemaal voor je doet, en dergelijke.
Share this | 491 keer bekeken | 3 reacties
Voor de rest sluit ik me helemaal bij Mylene aan.
Er is al verschillende malen over Checkstyle geschreven op deze blog. Over hoe nuttig het is, wat het allemaal voor je doet, en dergelijke.
Onlangs heb ik een workshop gegeven, waarin o.a. Checkstyle werd behandeld.
Als basis voor de Checkstyle oefening had ik een project gekozen, waar afgrijselijk veel fouten in zaten (>7000). De cursisten kregen een klein uur om zoveel mogelijk fouten op te lossen.
Voorwaarde was wel dat ze niet de code mochten weggooien (de snelste manier om het voor elkaar te krijgen) of checks uit mochten zetten (de een na snelste manier). Voor de winnaar was er een rol Rolo.
Jammer genoeg had ik niet genoeg uitgesloten... De winnaar had even snel JAutodoc gedraaid - dat voegt Javadoc comments toe aan je code - en dat loste heel veel fouten in een keer op - jammer genoeg word je niet heel enthousiast van de gegenereerde Javadoc - om het echt bruikbaar te maken zul je echt de details nog moeten invullen.
Wat tot mijn grote verbazing niemand had gedaan, was het aanpassen van een aantal Eclipse settings.
Via Window - Preferences - Java - Code Style - Clean Up en/of Window - Preferences - Java - Editor - Save Actions kun je enorm veel voor je laten doen. Het vergt even puzzelen om de settings aan te passen aan de Checkstyle checks (afhankelijk of je de Sun checks doet, de Eclipse checks of eigen custom checks), maar het hoeft maar één keer gedaan te worden, en dan kan een heel projectteam (of van mijn part een hele ontwikkelclub) het altijd gebruiken.

Ook wel zo gemakkelijk - dan is het niet meer afhankelijk van persoonlijke instellingen of discipline om een source format te draaien bij het saven (en dat scheelt best wel veel wijzigingen in je SCM...).
Ik geef meteen toe, het lost niet alles op (maar in mijn geval loste het draaien van één clean-up op het project een dikke 4000 fouten op - en ik had JAutodoc niet gedraaid - het grootste deel van de overgebleven fouten hadden dan ook betrekking op Javadoc).
De enige Checkstyle fout die moeilijk bleek op te lossen was (de meesten draaiden Eclipse op Windows) de "File does not end with a newline". Een van mijn collega's vond uit dat deze fout wegging als je je code kopieerde naar Notepad, een regel aan het eind toevoegde, en dan terugkopieerde... Nah. Geen optie... Schijnt te maken hebben met Windows/*nix verschillen. Als iemand hier een zinniger optie voor heeft, laat het alsjeblieft weten in de commentaren....
Een tweede punt van aandacht bleek dat Checkstyle heel irritant is als je gegenereerde code hebt, of tests met bijv. veel "Magic numbers". In dat geval zou het heel handig zijn om voor bepaalde files / directories bepaalde (of desnoods alle) checks uit te kunnen zetten.
Gelukkig kan Checkstyle dit ook; zie voor de beschrijving en voorbeelden (mind - er staan volledige filenames, maar je kunt ook een regexp gebruiken) http://checkstyle.sourceforge.net/config.html - en kijk bij "SuppressionFilter".
Het lijkt veel werk, maar uiteraard is het de bedoeling dat dit één keer voor een heel project wordt opgetuigd.
Het lijkt veel werk, maar uiteraard is het de bedoeling dat dit één keer voor een heel project wordt opgetuigd.
Vaak lijkt Checkstyle er te zijn om ons het leven zuur te maken, maar met een beetje moeite blijkt het gewoon weer het nuttige hulpmiddel, zoals het bedoeld is...
Nu alleen nog eraan denken om die Javadoc aan te passen - lege Javadoc toevoegen om Checkstyle tevreden te stellen is niet echt heel erg professioneel 

Share this | 491 keer bekeken | 3 reacties
Dennis Vredeveld reageert, op January 29, 2010 om 14:55 (GMT +01:00):
Het is ook aan te bevelen de format-opties (onder Java - Code Style - Formatter) aan te passen aan bv. de ingestelde regellengte, spaties, regeleindes e.d.Voor de rest sluit ik me helemaal bij Mylene aan.
Pascal reageert, op February 1, 2010 om 14:47 (GMT +01:00):
Hoi Mylène,
Wat betreft je laatste zin, en het hele artikel trouwens, helemaal met je eens. Echter, het blijkt dat JAutoDoc toch daadwerkelijk een volledig legitiem nut heeft , nl t.b.v. het snel winnen van een checkstyle "wedstrijd", voor al het overige is de tool discutabel/minder/niet geschikt.
BTW, de Rolo was lekker ;)
Reageer
Top artikelen





Dion Lammers reageert, op January 29, 2010 om 12:00 (GMT +01:00):
@Mylene, nuttige post. Natuurlijk is software kwaliteit een team-effort (tenminste ik hoop dat dit natuurlijk is) en checkstyle is een middel voor jezelf om de kwaliteit van je eigen software te verbeteren. Je geeft een aantal praktische tips om er goed mee om te gaan. Ik hoop in ieder geval dat mensen checkstyle gebruiken (en dan niet alleen maar in de vorm van een maven rapportje, na inchecken van code, waar vervolgens niet naar gekeken wordt) en dan primair vanuit de wil je code te willen verbeteren en niet 'omdat het moet'Programmeer met passie!