diff options
Diffstat (limited to 'build')
-rw-r--r-- | build/README.TXT | 28 | ||||
-rw-r--r-- | build/build.xml | 179 | ||||
-rw-r--r-- | build/phpcs.xml | 80 | ||||
-rw-r--r-- | build/phpmd.xml | 9 |
4 files changed, 296 insertions, 0 deletions
diff --git a/build/README.TXT b/build/README.TXT new file mode 100644 index 00000000000..128571058d8 --- /dev/null +++ b/build/README.TXT @@ -0,0 +1,28 @@ +How to setup build.xml on your local machine? + +1.) Install ant + e.g. apt-get install ant + +2.) Install jslint + Get the latest distribution from http://code.google.com/p/jslint4java/ and + place jslint4java-*.jar in your home under .ant/lib/ + +3.) Install PHP qa tools + Run as root: + pear config-set auto_discover 1 + pear install pear.phpqatools.org/phpqatools pear.netpirates.net/phpDox + + Alternative: + pear install pear.phpunit.de/phploc + pear install pear.phpunit.de/phpcpd + pear install pear.phpmd.org/PHP_PMD + pear install pear.pdepend.org/PHP_Depend + pear install pear.php.org/PHP_CodeSniffer + pear install PHP_CodeSniffer + pear install pear.phpqatools.org/PHP_CodeBrowser + + +How to call this ant script? + ant -f build/build.xml -Dbasedir=. + + diff --git a/build/build.xml b/build/build.xml new file mode 100644 index 00000000000..3df77ad024e --- /dev/null +++ b/build/build.xml @@ -0,0 +1,179 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project name="ownCloud" default="build" xmlns:jsl="antlib:com.googlecode.jslint4java"> + + <!-- the target 'build' can be used by developers for command line builds --> + <target name="build" depends="prepare,lint,jslint,phploc,pdepend,phpmd,phpcs,phpcpd,phpdoc,phpunit"/> + + <!-- the target 'build-ci' is used within our Jenkins CI-server http://ci.tmit.eu --> + <target name="build-ci" depends="prepare,lint,jslint-ci,phploc,pdepend,phpmd-ci,phpcs-ci,phpcpd-ci,phpdoc,phpunit,phpcb-ci"/> + + <!-- the target 'build-pullrequests' is used within our Jenkins CI-server for pull request analysis --> + <target name="build-pullrequests" depends="prepare,lint,jslint-ci"/> + + <target name="clean" description="Cleanup build artifacts"> + <delete dir="${basedir}/build/api"/> + <delete dir="${basedir}/build/code-browser"/> + <delete dir="${basedir}/build/coverage"/> + <delete dir="${basedir}/build/logs"/> + <delete dir="${basedir}/build/pdepend"/> + </target> + + <target name="prepare" depends="clean" + description="Prepare for build"> + <mkdir dir="${basedir}/build/api"/> + <mkdir dir="${basedir}/build/code-browser"/> + <mkdir dir="${basedir}/build/coverage"/> + <mkdir dir="${basedir}/build/logs"/> + <mkdir dir="${basedir}/build/pdepend"/> + </target> + + <!-- php syntax analysis --> + <target name="lint"> + <apply executable="php" failonerror="true"> + <arg value="-l" /> + + <fileset dir="${basedir}"> + <include name="**/*.php" /> + <exclude name="**/3rdparty/**" /> + <exclude name="**/l10n/**" /> + <!-- modified / --> + </fileset> + + </apply> + </target> + + <!-- javascript lint --> + <target name="jslint-ci" description="Run the JSLint tool on JS files"> + <jsl:jslint options="white,sloppy,vars,bitwise,eqeq,browser" haltOnFailure="false"> + <jsl:predef> +jQuery,$$,OC,$,oc_webroot,oc_appswebroots,oc_current_user,t,Files,FileList,FileActions,localStorage,OCCategories,EventSource,OCdialog,SVGSupport,dragOptions,dragOptions,folderDropOptions,formatDate,humanFileSize,procesSelection,relative_modified_date,scanFiles,simpleFileSize,simpleSize +</jsl:predef> + <!-- jsl:formatter type="plain" / --> + <jsl:formatter type="xml" destfile="build/logs/jslint.xml" /> + <fileset dir="${basedir}" includes="**/*.js" excludes="**/*.min.js,**/3rdparty/**" /> + </jsl:jslint> + </target> + + <target name="jslint" description="Run the JSLint tool on JS files"> + <jsl:jslint options="white,sloppy,vars,bitwise,eqeq,browser" haltOnFailure="false"> + <jsl:predef> +jQuery,$$,OC,$,oc_webroot,oc_appswebroots,oc_current_user,t,Files,FileList,FileActions,localStorage,OCCategories,EventSource,OCdialog,SVGSupport,dragOptions,dragOptions,folderDropOptions,formatDate,humanFileSize,procesSelection,relative_modified_date,scanFiles,simpleFileSize,simpleSize +</jsl:predef> + <jsl:formatter type="plain" /> + <fileset dir="${basedir}" includes="**/*.js" excludes="**/*.min.js,**/3rdparty/**" /> + </jsl:jslint> + </target> + + <target name="phploc" description="Measure project size using PHPLOC"> + <exec executable="phploc"> + <arg value="--log-csv" /> + <arg value="${basedir}/build/logs/phploc.csv" /> + <arg path="${basedir}" /> + <arg value="--exclude" /> + <arg value="${basedir}/3rdparty/" /> + </exec> + </target> + + <target name="pdepend" + description="Calculate software metrics using PHP_Depend"> + <exec executable="pdepend"> + <arg value="--jdepend-xml=${basedir}/build/logs/jdepend.xml" /> + <arg value="--jdepend-chart=${basedir}/build/pdepend/dependencies.svg" /> + <arg value="--overview-pyramid=${basedir}/build/pdepend/overview-pyramid.svg" /> + <arg value="--ignore=${basedir}/3rdparty/"/> + <arg path="${basedir}" /> + </exec> + </target> + + <target name="phpmd-ci" + description="Perform project mess detection using PHPMD creating a log file for the continuous integration server"> + <exec executable="phpmd"> + <arg path="${basedir}" /> + <arg value="xml" /> + <arg value="${basedir}/build/phpmd.xml" /> + <arg value="--reportfile" /> + <arg value="${basedir}/build/logs/pmd.xml" /> + <arg value="--exclude" /> + <arg value="${basedir}/3rdparty/" /> + </exec> + </target> + + <target name="phpmd" + description="Perform project mess detection using PHPMD creating a log file for the continuous integration server"> + <exec executable="phpmd"> + <arg path="${basedir}" /> + <arg value="xml" /> + <arg value="${basedir}/build/phpmd.xml" /> + <arg value="--exclude" /> + <arg value="${basedir}/3rdparty/" /> + </exec> + </target> + + <target name="phpcs-ci" + description="Find coding standard violations using PHP_CodeSniffer creating a log file for the continuous integration server"> + <exec executable="phpcs" > + <arg value="-p" /> + <arg value="-v" /> + <arg value="--tab-width=4" /> + <arg value="--report=checkstyle" /> + <arg value="--report-file=${basedir}/build/logs/checkstyle.xml" /> + <arg value="--standard=${basedir}/build/phpcs.xml" /> + <arg path="${basedir}" /> + </exec> + </target> + + <target name="phpcs" + description="Find coding standard violations using PHP_CodeSniffer creating a log file for the continuous integration server"> + <exec executable="phpcs" > + <arg value="-p" /> + <arg value="-v" /> + <arg value="--tab-width=4" /> + <arg value="--standard=${basedir}/build/phpcs.xml" /> + <arg path="${basedir}" /> + </exec> + </target> + + <target name="phpcpd" description="Find duplicate code using PHPCPD"> + <exec executable="phpcpd"> + <arg value="--exclude" /> + <arg value="${basedir}/3rdparty/" /> + <arg path="${basedir}" /> + </exec> + </target> + + <target name="phpcpd-ci" description="Find duplicate code using PHPCPD"> + <exec executable="phpcpd"> + <arg value="--log-pmd" /> + <arg value="${basedir}/build/logs/pmd-cpd.xml" /> + <arg value="--exclude" /> + <arg value="${basedir}/3rdparty/" /> + <arg path="${basedir}" /> + </exec> + </target> + + <!-- No idea if we need this within this build file. This is part of the release which is not contained within this script. --> + <target name="phpdoc" + description="Generate API documentation using PHPDocumentor"> + <!-- exec executable="phpdox"/ --> + </target> + + <!-- currently we use autotest.sh for executing the unit tests against 3 different database setups --> + <target name="phpunit" description="Run unit tests with PHPUnit"> + <echo message="TODO: phpunit goes here"/> + <!-- exec executable="phpunit" failonerror="true"/ --> + </target> + + <target name="phpcb-ci" + description="Aggregate tool output with PHP_CodeBrowser"> + <exec executable="phpcb"> + <arg value="--log" /> + <arg path="${basedir}/build/logs" /> + <arg value="--source" /> + <arg path="${basedir}" /> + <arg value="--output" /> + <arg path="${basedir}/build/code-browser" /> + <arg value="--exclude" /> + <arg value="${basedir}/3rdparty/" /> + </exec> + </target> +</project> diff --git a/build/phpcs.xml b/build/phpcs.xml new file mode 100644 index 00000000000..1e10be1a111 --- /dev/null +++ b/build/phpcs.xml @@ -0,0 +1,80 @@ +<?xml version="1.0"?> +<ruleset name="PHP_CodeSniffer"> + <description>The coding standard for PHP_CodeSniffer itself.</description> + <exclude-pattern>*/Tests/*</exclude-pattern> + <exclude-pattern>*/lib/MDB2/*</exclude-pattern> + <exclude-pattern>*/3rdparty/*</exclude-pattern> + <exclude-pattern>*.min.*</exclude-pattern> + <exclude-pattern>*/l10n/*</exclude-pattern> + <exclude-pattern>*/files_texteditor/js/aceeditor/*</exclude-pattern> + <exclude-pattern>*/files_pdfviewer/js/pdfjs/*</exclude-pattern> + <exclude-pattern>*/files_odfviewer/src/*</exclude-pattern> + <exclude-pattern>*/files_svgedit/svg-edit/*</exclude-pattern> + <exclude-pattern>*jquery-ui-1.8.16.custom.css</exclude-pattern> + <extensions>php</extensions> + + <!-- Include the whole PEAR standard --> + <rule ref="PEAR"> + <exclude name="PEAR.Commenting.FileComment.InvalidAuthors" /> + <exclude name="PEAR.Commenting.FileComment.TagIndent" /> + <exclude name="PEAR.Commenting.FileComment.MissingVersion" /> + <exclude name="PEAR.Commenting.FileComment.MissingTag" /> + <exclude name="PEAR.Commenting.ClassComment.TagIndent" /> + <!-- exclude name="PEAR.WhiteSpace.ScopeIndent.Incorrect" /--> + <exclude name="PEAR.Commenting.ClassComment.WrongTagOrder" /> + <exclude name="Generic.WhiteSpace.DisallowTabIndent.TabsUsed" /> + <exclude name="PEAR.Functions.FunctionCallSignature.SpaceBeforeOpenBracket" /> + <exclude name="PEAR.Functions.FunctionCallSignature.SpaceAfterOpenBracket" /> + <exclude name="Generic.ControlStructures.InlineControlStructure.Discouraged" /> + <exclude name="PEAR.Commenting.FunctionComment.ParameterCommentsNotAligned" /> + <exclude name="PEAR.Commenting.FunctionComment.MissingParamTag" /> + <exclude name="PEAR.ControlStructures.ControlSignature" /> + + <!-- ident and alignment stuff --> + <!-- exclude name="PEAR.ControlStructures.MultiLineCondition.Alignment" /> + <exclude name="PEAR.WhiteSpace.ScopeClosingBrace.BreakIdent" / --> + + <!-- allow curly on classes and functions --> + <exclude name="PEAR.Functions.FunctionDeclaration.BraceOnSameLine" /> + <exclude name="PEAR.Classes.ClassDeclaration.OpenBraceNewLine" /> + + <exclude name="PEAR.NamingConventions.ValidFunctionName.PrivateNoUnderscore" /> + <exclude name="PEAR.NamingConventions.ValidVariableName.PrivateNoUnderscore" /> + <exclude name="PEAR.WhiteSpace.ScopeIndent"/> + </rule> + + <rule ref="Zend.Files.ClosingTag" /> + + <rule ref="Generic.WhiteSpace.ScopeIndent"> + <properties> + <property name="indent" value="4"/> + </properties> + </rule> + + <rule ref="Generic.Files.LineLength"> + <properties> + <property name="lineLimit" value="120"/> + <property name="absoluteLineLimit" value="160"/> + </properties> + </rule> + + <!-- Include most of the Squiz standard --> + <!-- rule ref="Squiz"> + <exclude name="Squiz.Classes.ClassFileName"/> + <exclude name="Squiz.Classes.ValidClassName"/> + <exclude name="Squiz.Commenting.ClassComment"/> + <exclude name="Squiz.Commenting.FileComment"/> + <exclude name="Squiz.Commenting.FunctionComment"/> + <exclude name="Squiz.Commenting.VariableComment"/> + <exclude name="Squiz.ControlStructures.SwitchDeclaration"/> + <exclude name="Squiz.Files.FileExtension"/> + <exclude name="Squiz.NamingConventions.ConstantCase"/> + <exclude name="Squiz.Operators.ComparisonOperatorUsage"/> +</rule --> + + <!-- We allow variables to be used inside double quoted strings --> + <!-- rule ref="Squiz.Strings.DoubleQuoteUsage.ContainsVar"> + <severity>0</severity> + </rule --> + +</ruleset> diff --git a/build/phpmd.xml b/build/phpmd.xml new file mode 100644 index 00000000000..3935a5b74b5 --- /dev/null +++ b/build/phpmd.xml @@ -0,0 +1,9 @@ +<?xml version="1.0"?> + <ruleset name="My first PHPMD rule set" xmlns="http://pmd.sf.net/ruleset/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd" xsi:noNamespaceSchemaLocation=" http://pmd.sf.net/ruleset_xml_schema.xsd"> + <description> My custom rule set that checks my code... </description> + <!-- Import the entire unused code rule set --> + <rule ref="rulesets/unusedcode.xml" /> + + <!-- Import the entire cyclomatic complexity rule --> + <rule ref="rulesets/codesize.xml/CyclomaticComplexity" /> +</ruleset> |