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>