view metrics.gradle @ 118:f84f1d5465c1

update code coverage for sonar 3.3
author smith@nwoca.org
date Thu, 01 Nov 2012 21:18:20 +0100
parents 5e06e0629f85
children 740e905fce78
line wrap: on
line source

apply plugin: "sonar"

gradle.addListener(new SsdtSonarSettings())

ant.property(file: System.getProperty('user.home') + "/.ssdt/sonar.properties")

buildscript {
  repositories {
        maven { url 'http://repos.ssdt.nwoca.org/artifactory/gradle-plugins' }
        maven { url 'http://repos.ssdt.nwoca.org/artifactory/repository' }
        maven { url 'http://repos.ssdt.nwoca.org/artifactory/libs-snapshots' }
   }
    dependencies {
        classpath "me.davesmith:gradle-cobertura-plugin:1.0.2.SNAPSHOT"
        classpath "net.sourceforge.cobertura:cobertura:1.9.4.1"
    }
}


sonar {
    server {
        url = "http://sonar.ssdt-ohio.org"
    }
    database {
        url = ant.properties['sonar.jdbc.url']
        driverClassName = ant.properties['sonar.jdbc.driverClassName']
        username = ant.properties['sonar.jdbc.username']
        password = ant.properties['sonar.jdbc.password']
    }
    project {
        dynamicAnalysis = "reuseReports"     
        sourceEncoding = "UTF-8"                    
    }  
    withGlobalProperties { props ->
        props["sonar.language"] = "grvy"
        props['sonar.core.codeCoveragePlugin'] = 'cobertura'
    }
}
    
class SsdtSonarSettings extends BuildAdapter implements BuildListener {
    
    def void projectsEvaluated(Gradle gradle) {    
        Project root = gradle.getRootProject()  

        def testableProjects = root.allprojects.findAll { it.configurations.any { it.name.contains('test') } }
        
        root.configure(testableProjects) { p ->
            def usesGroovy = configurations.any { it.name == 'groovy' } 
            apply plugin: net.saliman.gradle.plugin.cobertura.CoberturaPlugin
                        
            sonar {
                project {
                    language = usesGroovy ? 'groovy' : 'java'
                    dynamicAnalysis = "reuseReports"     
                    sourceEncoding = "UTF-8"                    
                    coberturaReportPath = file("${reporting.baseDir}/cobertura/coverage.xml")                   
                    withProjectProperties { props ->
                        if (usesGroovy) {
                            println "setting groovy profile on $p"
                            props['sonar.profile'] = 'SSDT Groovy Way'
                        }
                        props['sonar.core.codeCoveragePlugin'] = 'cobertura'
                        props['sonar.cobertura.reportPath'] = "${reporting.baseDir}/cobertura/coverage.xml"
                        props["sonar.cpd.skip"] = true
                        props['sonar.language'] = usesGroovy ? 'grvy' : 'java'
                    }                    
                }
                
            }
              
            cobertura {
                if (usesGroovy) {
                    coverageSourceDirs = sourceSets.main.groovy.srcDirs
                }            
                if (gradle.bambooBuild) {
                    coverageFormat = 'xml'
                }
            }
                        
        }
        
        root.allprojects {
 
            def thisProject = delegate     
            def usesGroovy = thisProject.configurations.any { it.name == 'groovy' } 
             
            sonar {
                project {                            
                    language = usesGroovy ? 'groovy' : 'java'
                    dynamicAnalysis = "reuseReports"     
                    sourceEncoding = "UTF-8"
                    withProjectProperties { props ->
                        props['sonar.core.codeCoveragePlugin'] = 'cobertura'
                        props['sonar.language'] = usesGroovy ? 'grvy' : 'java'
                    }                    
                }
            }
          
        }
    }
}