Comparing Code Folders, the groovy way
Ich habe mir vor einiger Zeit mal die Zeit genommen, ein wenig mit Groovy rumzuspielen, da ich glaube dass Groovy eine Prima Scriptingergänzung zu JAVA darstellt. Und heute hatte ich mal einen typischen Scripting Task aufm Schreibtisch:
Das Vergleichen zweier Verzeichnisse, in dem einen JAVA Code aus einer älteren Iteration und in dem anderen die neue Version. Mich haben nur die groben Zahlen (LoC, Files) interessiert und so sieht die Groovy-Lösung aus:
// Pattern for Java Filesdef p = ~/.*\.java/// Pathes to the directories containing the codedef newPath ='c:\\code\\20090427'def oldPath ='c:\\code\\20090213'// variables for countingdef newFilecount = 0def oldFilecount = 0def newLOCcount = 0def oldLOCcount = 0//define a closure for recursive directory access// in the new code folderdef directoryClosNewdirectoryClosNew = {it.eachDir(directoryClosNew);it.eachFileMatch(p){newFilecount++println "New source: $it"it.eachLine {newLOCcount++}}}//define a closure for recursive directory access// in the old code folderdef directoryClosOlddirectoryClosOld = {it.eachDir(directoryClosOld);it.eachFileMatch(p){oldFilecount++println "Old source: $it"it.eachLine {oldLOCcount++}}}// call closure on directoriesdirectoryClosNew(new File( newPath ))directoryClosOld(new File( oldPath ))println " Old number of Java Files $oldFilecount \n New number of Java Files $newFilecount "println " Old Lines of Code $oldLOCcount \n New Lines of Code $newLOCcount"
Schick, nicht? :-)
5 Kommentare:
... und wenn man das rad nicht neu erfinden will und auf ein Produkt zugreifen will, nimmt man beispielsweise "Beyond Compare" das sich mit seiner Folder Compare-Funktionalität zum Mergen von Branches etc sehr gut eignet,...
ihr habt doch viel zu viel overhead... wc -l , vllt. noch das ein oder andere grep dazu, fertig ,-)
Jaja, wenn man die Zeit findet, sich entweder in ein weiteres Tool einzuarbeiten (Dan) oder mal schnell ein Linux aufzusetzen (meister schwenker), dann kann man das so machen... ;-)
dafür brauchst du kein linux, dafür kannst du entweder cygwin installieren oder die unxtools.. billige ausrede ;-)
außerdem ist das doch serversache und die werden doch hoffentlich nicht unter windows laufen ?!
Das Tool ist intuitiv zu bedienen wenn man graphische Comparetools für Sourcecodemanagementsysteme kennt,
und: Jeder sollte ein kleines Linux/Unix haben :-)
Kommentar veröffentlichen
Abonnieren Kommentare zum Post [Atom]
<< Startseite