alexis-j
10/4/2012 - 8:29 PM

Php_SF2_Build-Local

Php_SF2_Build-Local

<?xml version="1.0" encoding="UTF-8"?>
<project name="NosBelIdees-Local" basedir="." default="build:main">
  
    <!-- ****************** -->
    <!-- Project properties -->
    <!-- ****************** -->

    <property name="dir.app" value="${project.basedir}/app" />
    <property name="dir.src" value="${project.basedir}/src" />
    <property name="dir.bin" value="${project.basedir}/bin" />
    <property name="dir.build" value="${project.basedir}/build" />
    <property name="dir.docs" value="${dir.build}/docs" />
    <property name="dir.browser" value="${dir.build}/browser" />
    <property name="dir.reports" value="${dir.build}/logs" />
    <property name="dir.reports.pdepend" value="${dir.reports}/pdepend" />
    <property name="dir.reports.coverage" value="${dir.reports}/coverage" />

    <!-- Filesets -->
    <fileset id="sourcecode" dir="${dir.src}">
        <include name="**/*.php" />
    </fileset>

    <!-- *********** -->
    <!-- Main Target -->
    <!-- *********** -->

    <target name="build:main"
          depends="build:clean, build:prepare, build:test, build:check, build:phpdoc, build:browser"
          description="Run all test and build everything" />

    <!-- ******************* -->
    <!-- First level targets -->
    <!-- ******************* -->

    <!-- Project build clean -->
    <target name="build:clean" description="Clean up build directories.">
        <echo msg="Cleaning build directories ..." />
        <delete dir="${dir.build}" verbose="true" />
    </target>

    <!-- Project build prepare -->
    <target name="build:prepare" description="Create build directories.">
        <echo msg="Creating build directories ..." />
        <mkdir dir="${dir.build}" />
        <mkdir dir="${dir.docs}" />
        <mkdir dir="${dir.browser}" />
        <mkdir dir="${dir.reports}" />
        <mkdir dir="${dir.reports.coverage}" />
        <mkdir dir="${dir.reports.pdepend}" />
    </target>

    <!-- Test target -->
    <target name="build:test"
          depends="test:unit"
          description="Executes all tests.." />

    <!-- Check target -->
    <target name="build:check"
          depends="check:cs, check:cpd, check:md"
          description="Analyzes app code." />

    <!-- PHP Code Browser -->
    <target name="build:browser" description="Generating code browser..."> 
        <exec command="phpcb
            --log ${dir.reports} 
            --source ${project.basedir}/src 
            --output ${dir.browser}" />
    </target>

    <!-- PHP Documentor -->
    <target name="build:phpdoc" description="Generate API documentation."> 
        <echo msg="Generating API documentation with PHPDoc..." />
        <exec command="phpdoc -d ${dir.src} -t ${dir.docs} --template responsive --title ${phing.project.name}" />
    </target>


    <!-- ******************** -->
    <!-- Second level targets -->
    <!-- ******************** -->

    <!-- Php code sniffer -->
    <target name="check:cs" description="Checks coding standard.">
        <echo msg="Checking coding standard ..." />
        <phpcodesniffer standard="PSR2"
                        showSniffs="false"
                        showWarnings="true">
            <fileset refid="sourcecode" />
            <formatter type="summary" usefile="false"/>
            <formatter type="source" usefile="false"/>
            <formatter type="full" outfile="${dir.reports}/checkstyle.txt" />
        </phpcodesniffer>
    </target>

    <!-- copy/paste detector -->
    <target name="check:cpd" description="Checks similar code blocks.">
        <echo msg="Checking similar code blocks ..." />
        <phpcpd minTokens="5"
                minLines="5">
            <fileset refid="sourcecode" />
            <formatter type="default" useFile="false" />
        </phpcpd>
    </target>

    <!-- PHP Mess Detector -->
    <target name="check:md" description="Analyse du code mort.">
        <echo msg="Analyse du code mort ..." />
        <phpmd rulesets="codesize,unusedcode,naming,design">
            <fileset refid="sourcecode" />
            <formatter type="text" useFile="false" />
            <formatter type="html" outfile="${dir.reports}/pmd.html" />
        </phpmd>
    </target>

    <!-- Unit tests -->
    <target name="test:unit"
        description="Executes unit tests.">
        <echo msg="Running unit tests ..." />
        <exec command="phpunit --log-junit ${dir.reports}/phpunit.xml --coverage-clover ${dir.reports.coverage}/clover.xml --coverage-html ${dir.reports.coverage}/ -c ${dir.app}"/>
    </target>

</project>