view sonar-ant.xml @ 42:f1144aa0c01b

CM-127: Improve sonar target to handle java projects and optionally use 'build breaker' to fail builds
author smith@nwoca.org
date Tue, 07 Jun 2011 21:44:14 -0400
parents 7df554d8c4c1
children 400f9d8bbf5b
line wrap: on
line source
<?xml version="1.0" encoding="UTF-8"?>
<project name="sonar-project-tasks" default="" basedir="."
         xmlns:ivy="antlib:fr.jayasoft.ivy.ant"
         xmlns:sonar="antlib:org.sonar.ant"
         xmlns:ssdt="http://www.ssdt-ohio.org/ant/common"
         xmlns:ssdtant="antlib:org.ssdt_ohio.tools.ant">

    <description>Sonar Ant tasks</description>

    <property           name="ssdt.sonar.jar.src"
                        value="http://ivy.ssdt.nwoca.org/repository/sonar/sonar-ant-task.jar"/>
    <ssdt:fetch         dest="${user.home.ant.lib}/sonar.jar"
                        src="${ssdt.sonar.jar.src}"/>
    <ssdt:import-ant    file="jacoco-ant.xml"/>

    <ssdtant:add-dependency target="init" depends="-sonar-init"/>

    <target name="-sonar-init">
        <if>
            <isset property="sonar.enabled"/>
            <then>
                <echo message="Sonar: Active"/>
            </then>
        </if>
        <if>
            <contains string="${ant.project.invoked-targets}" substring="sonar"/>
            <then>
                <property name="ignore.failing.tests" value="true"/>
            </then>
        </if>
        <property name="sonar.active" value="true"/>
    </target>

    <target name="-check-sonar">
        <property file="${ssdt.devel.kit}/sonar.properties"/>
        <property name="sonar.host.url" value="http://ssdt-web-10.nwoca.org:9000" />
        <property name="sonar.language" value="grvy"/>
        <taskdef uri="antlib:org.sonar.ant" resource="org/sonar/ant/antlib.xml"/>
    </target>

    <target name="sonar" depends="project.init,-check-sonar,ivy-info,coverage.xml" if="sonar.enabled">
        <fail unless="sonar.active" message="Sonar has not been initialized"/>
        <property name="sonar.projectname" value="${ivy.project.module}"/>
        <sonar:sonar
            workDir="${build.dir}/sonar"
            key="${ivy.project.organisation}:${sonar.projectname}"
            version="${project.version}"  >
            <sources>
                <path location="${src.dir}" />
            </sources>
            <property key="sonar.core.codeCoveragePlugin" value="jacoco"/>
            <property key="sonar.projectName" value="${sonar.projectname}"/>
            <property key="sonar.language" value="${sonar.language}" />
            <property key="sonar.java.source" value="${javac.source}" />
            <property key="sonar.java.target" value="${java.target}" />                     
            <property key="sonar.dynamicAnalysis" value="reuseReports" />
            <property key="sonar.surefire.reportsPath" value="${build.test.results.dir}"/>
            <property key="sonar.jacoco.reportPath" value="${jacoco.data.file}"/>
            <property key="sonar.jacoco.itReportPath" value="${jacoco.data.file}"/>
            <tests>
                <path location="${test.src.dir}" />
            </tests>
            <binaries>
                <path location="${build.classes.dir}" />
            </binaries>
        </sonar:sonar>
        <fail if="tests.failed" unless="sonar.use.build.breaker">Some tests failed; see details above. (sonar)</fail>
    </target>

</project>