29 April 2009

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 Files
def p = ~/.*\.java/
// Pathes to the directories containing the code
def newPath ='c:\\code\\20090427'
def oldPath ='c:\\code\\20090213'
// variables for counting
def newFilecount = 0
def oldFilecount = 0
def newLOCcount = 0
def oldLOCcount = 0

 
//define a closure for recursive directory access
// in the new code folder
def directoryClosNew
directoryClosNew = {
    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 folder
def directoryClosOld
directoryClosOld = {
    it.eachDir(directoryClosOld);
    it.eachFileMatch(p){
        oldFilecount++
        println "Old source: $it"
        it.eachLine {
            oldLOCcount++
        }
    }
}

// call closure on directories
directoryClosNew(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? :-)

Labels: ,

5 Kommentare:

Am/um 30 April, 2009 21:37 , Anonymous dan meinte...

... 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,...

 
Am/um 02 Mai, 2009 10:09 , Anonymous meister schwenker meinte...

ihr habt doch viel zu viel overhead... wc -l , vllt. noch das ein oder andere grep dazu, fertig ,-)

 
Am/um 04 Mai, 2009 17:02 , Blogger Michael (Meister Hille) meinte...

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... ;-)

 
Am/um 08 Mai, 2009 08:06 , Anonymous meister schwenker meinte...

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 ?!

 
Am/um 14 Mai, 2009 22:34 , Anonymous dan meinte...

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

Links zu diesem Post:

Link erstellen

<< Startseite