2015-11-10 06:45:55 -05:00
<?xml version="1.0" encoding="UTF-8"?>
2015-11-10 16:29:17 -05:00
<project name= "query" default= "full-build" >
2015-11-10 06:45:55 -05:00
<!-- By default, we assume all tools to be on the $PATH -->
<property name= "pdepend" value= "pdepend" />
<property name= "phpcpd" value= "phpcpd" />
<property name= "phpcs" value= "phpcs" />
<property name= "phpdox" value= "phpdox" />
<property name= "phploc" value= "phploc" />
<property name= "phpmd" value= "phpmd" />
<property name= "phpunit" value= "phpunit" />
2015-11-20 22:46:21 -05:00
<property name= "sonar" value= "sonar-runner" />
2015-11-10 06:45:55 -05:00
2015-11-10 16:29:17 -05:00
<!-- Use this when the tools are located as PHARs in build/tools
<property name= "pdepend" value= "build/tools/pdepend.phar" />
<property name= "phpcpd" value= "build/tools/phpcpd.phar" />
<property name= "phpcs" value= "build/tools/phpcs.phar" />
<property name= "phpdox" value= "build/tools/phpdox.phar" />
<property name= "phploc" value= "build/tools/phploc.phar" />
<property name= "phpmd" value= "build/tools/phpmd.phar" />
<property name= "phpunit" value= "build/tools/phpunit.phar" /> -->
<!-- Use this when the tools are managed by Composer in vendor/bin
<property name= "pdepend" value= "vendor/bin/pdepend" />
<property name= "phpcpd" value= "vendor/bin/phpcpd" />
<property name= "phpcs" value= "vendor/bin/phpcs" />
<property name= "phpdox" value= "vendor/bin/phpdox" />
<property name= "phploc" value= "vendor/bin/phploc" />
<property name= "phpmd" value= "vendor/bin/phpmd" />
<property name= "phpunit" value= "vendor/bin/phpunit" /> -->
2015-11-10 06:45:55 -05:00
<target name= "full-build"
2015-11-20 22:46:21 -05:00
depends="prepare,static-analysis,phpunit,phpdox,sonar,-check-failure"
2015-11-10 06:45:55 -05:00
description="Performs static analysis, runs the tests, and generates project documentation"/>
<target name= "full-build-parallel"
depends="prepare,static-analysis-parallel,phpunit,phpdox,-check-failure"
description="Performs static analysis (executing the tools in parallel), runs the tests, and generates project documentation"/>
<target name= "quick-build"
depends="prepare,lint,phpunit-no-coverage"
description="Performs a lint check and runs the tests (without generating code coverage reports)"/>
<target name= "static-analysis"
depends="lint,phploc-ci,pdepend,phpcs-ci,phpcpd-ci"
description="Performs static analysis" />
<!-- Adjust the threadCount attribute's value to the number of CPUs -->
<target name= "static-analysis-parallel"
description="Performs static analysis (executing the tools in parallel)">
<parallel threadCount= "2" >
<sequential >
<antcall target= "pdepend" />
</sequential>
<antcall target= "lint" />
<antcall target= "phpcpd-ci" />
<antcall target= "phpcs-ci" />
<antcall target= "phploc-ci" />
</parallel>
</target>
<target name= "clean"
unless="clean.done"
description="Cleanup build artifacts">
2015-11-10 16:29:17 -05:00
<delete dir= "build/api" />
<delete dir= "build/coverage" />
<delete dir= "build/logs" />
<delete dir= "build/pdepend" />
<delete dir= "build/phpdox" />
2015-11-10 06:45:55 -05:00
<property name= "clean.done" value= "true" />
</target>
<target name= "prepare"
unless="prepare.done"
depends="clean"
description="Prepare for build">
2015-11-10 16:29:17 -05:00
<mkdir dir= "build/api" />
<mkdir dir= "build/coverage" />
<mkdir dir= "build/logs" />
<mkdir dir= "build/pdepend" />
<mkdir dir= "build/phpdox" />
2015-11-10 06:45:55 -05:00
<property name= "prepare.done" value= "true" />
</target>
<target name= "lint"
unless="lint.done"
description="Perform syntax check of sourcecode files">
<apply executable= "php" taskname= "lint" >
<arg value= "-l" />
2015-11-10 16:29:17 -05:00
<fileset dir= "src" >
2015-11-10 06:45:55 -05:00
<include name= "**/*.php" />
</fileset>
2015-11-10 16:29:17 -05:00
<fileset dir= "tests" >
2015-11-10 06:45:55 -05:00
<include name= "**/*.php" />
</fileset>
</apply>
<property name= "lint.done" value= "true" />
</target>
<target name= "phploc"
unless="phploc.done"
description="Measure project size using PHPLOC and print human readable output. Intended for usage on the command line.">
<exec executable= "${phploc}" taskname= "phploc" >
<arg value= "--count-tests" />
2015-11-10 16:29:17 -05:00
<arg path= "src" />
<arg path= "tests" />
2015-11-10 06:45:55 -05:00
</exec>
<property name= "phploc.done" value= "true" />
</target>
<target name= "phploc-ci"
unless="phploc.done"
depends="prepare"
description="Measure project size using PHPLOC and log result in CSV and XML format. Intended for usage within a continuous integration environment.">
<exec executable= "${phploc}" taskname= "phploc" >
<arg value= "--count-tests" />
<arg value= "--log-csv" />
2015-11-10 16:29:17 -05:00
<arg path= "build/logs/phploc.csv" />
2015-11-10 06:45:55 -05:00
<arg value= "--log-xml" />
2015-11-10 16:29:17 -05:00
<arg path= "build/logs/phploc.xml" />
<arg path= "src" />
<arg path= "tests" />
2015-11-10 06:45:55 -05:00
</exec>
<property name= "phploc.done" value= "true" />
</target>
<target name= "pdepend"
unless="pdepend.done"
depends="prepare"
description="Calculate software metrics using PHP_Depend and log result in XML format. Intended for usage within a continuous integration environment.">
<exec executable= "${pdepend}" taskname= "pdepend" >
2015-11-10 16:29:17 -05:00
<arg value= "--jdepend-xml=build/logs/jdepend.xml" />
<arg value= "--jdepend-chart=build/pdepend/dependencies.svg" />
<arg value= "--overview-pyramid=build/pdepend/overview-pyramid.svg" />
<arg path= "src" />
2015-11-10 06:45:55 -05:00
</exec>
<property name= "pdepend.done" value= "true" />
</target>
<target name= "phpcs"
unless="phpcs.done"
description="Find coding standard violations using PHP_CodeSniffer and print human readable output. Intended for usage on the command line before committing.">
<exec executable= "${phpcs}" taskname= "phpcs" >
<arg value= "--standard=PSR2" />
<arg value= "--extensions=php" />
<arg value= "--ignore=autoload.php" />
2015-11-10 16:29:17 -05:00
<arg path= "src" />
<arg path= "tests" />
2015-11-10 06:45:55 -05:00
</exec>
<property name= "phpcs.done" value= "true" />
</target>
<target name= "phpcs-ci"
unless="phpcs.done"
depends="prepare"
description="Find coding standard violations using PHP_CodeSniffer and log result in XML format. Intended for usage within a continuous integration environment.">
<exec executable= "${phpcs}" output= "/dev/null" taskname= "phpcs" >
<arg value= "--report=checkstyle" />
2015-11-10 16:29:17 -05:00
<arg value= "--report-file=build/logs/checkstyle.xml" />
2015-11-10 06:45:55 -05:00
<arg value= "--standard=PSR2" />
<arg value= "--extensions=php" />
<arg value= "--ignore=autoload.php" />
2015-11-10 16:29:17 -05:00
<arg path= "src" />
<arg path= "tests" />
2015-11-10 06:45:55 -05:00
</exec>
<property name= "phpcs.done" value= "true" />
</target>
<target name= "phpcpd"
unless="phpcpd.done"
description="Find duplicate code using PHPCPD and print human readable output. Intended for usage on the command line before committing.">
<exec executable= "${phpcpd}" taskname= "phpcpd" >
2015-11-10 16:29:17 -05:00
<arg path= "src" />
2015-11-10 06:45:55 -05:00
</exec>
<property name= "phpcpd.done" value= "true" />
</target>
<target name= "phpcpd-ci"
unless="phpcpd.done"
depends="prepare"
description="Find duplicate code using PHPCPD and log result in XML format. Intended for usage within a continuous integration environment.">
<exec executable= "${phpcpd}" taskname= "phpcpd" >
<arg value= "--log-pmd" />
2015-11-10 16:29:17 -05:00
<arg path= "build/logs/pmd-cpd.xml" />
<arg path= "src" />
2015-11-10 06:45:55 -05:00
</exec>
<property name= "phpcpd.done" value= "true" />
</target>
<target name= "phpunit"
unless="phpunit.done"
depends="prepare"
description="Run unit tests with PHPUnit">
2015-11-10 16:37:43 -05:00
<exec executable= "${phpunit}" resultproperty= "result.phpunit" taskname= "phpunit" >
2015-11-10 06:45:55 -05:00
<arg value= "--configuration" />
2015-11-10 16:29:17 -05:00
<arg path= "build/phpunit.xml" />
2015-11-10 06:45:55 -05:00
</exec>
<property name= "phpunit.done" value= "true" />
</target>
<target name= "phpunit-no-coverage"
unless="phpunit.done"
depends="prepare"
description="Run unit tests with PHPUnit (without generating code coverage reports)">
<exec executable= "${phpunit}" failonerror= "true" taskname= "phpunit" >
<arg value= "--configuration" />
2015-11-10 16:29:17 -05:00
<arg path= "build/phpunit.xml" />
2015-11-10 06:45:55 -05:00
<arg value= "--no-coverage" />
</exec>
<property name= "phpunit.done" value= "true" />
</target>
<target name= "phpdox"
unless="phpdox.done"
depends="phploc-ci,phpcs-ci,phpunit"
description="Generate project documentation using phpDox">
2015-11-10 16:29:17 -05:00
<exec executable= "${phpdox}" dir= "build" taskname= "phpdox" />
2015-11-10 06:45:55 -05:00
<property name= "phpdox.done" value= "true" />
</target>
2015-11-20 22:46:21 -05:00
<target name= "sonar"
depends="phpunit">
<exec executable= "${sonar}" taskname= "sonar" />
<property name= "sonar.done" value= "true" />
</target>
2015-11-10 06:45:55 -05:00
<target name= "-check-failure" >
<fail message= "PHPUnit did not finish successfully" >
<condition >
<not >
<equals arg1= "${result.phpunit}" arg2= "0" />
</not>
</condition>
</fail>
</target>
</project>