Exclure certains répertoires et fichiers dans pdepend, phpmd, phpcpd, phpcs, phpdoc, phploc
dans mon projet il y a certains répertoires et certains fichiers php qui sont de très grande taille à cause desquels ma compilation échoue et je veux les exclure dans mon build.xml
Ques1 - Dois-je écrire le --ignore="path/filename"
pour chaque fichier php du projet?
Ques2 - Il y a certains fichiers qui ne sont pas php mais .dat
je devrais donc mentionner ces fichiers dans le --ignore
trop?
Ques3 - puis - je spécifier à exclure des fichiers en fonction de leur taille que j'ai exclure tous les fichiers de plus de 500ko?
Mon fichier xml ressemble à ceci:
<?xml version="1.0" encoding="UTF-8"?>
<project name="name-of-project" default="build" basedir=".">
<property name="root.dir" value="${basedir}/.."/>
<property name="source" value="${root.dir}"/>
<target name="clean"
description="Clean up and create artifact directories">
<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"/>
<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>
<target name="phpunit"
description="Run unit tests using PHPUnit and generates junit.xml and clover.xml">
<exec executable="phpunit" failonerror="true">
<env key="DOCUMENT_ROOT" value="${source}/api"/>
<env key="MODEL_ROOT" value="${source}/model"/>
</exec>
</target>
<target name="parallelTasks"
description="Run the pdepend, phpmd, phpcpd, phpcs, phpdoc and phploc tasks in parallel using a maximum of 2 threads.">
<parallel threadCount="2">
<sequential>
<antcall target="pdepend"/>
<antcall target="phpmd"/>
</sequential>
<antcall target="phpcpd"/>
<antcall target="phpcs"/>
<antcall target="phpdoc"/>
<antcall target="phploc"/>
</parallel>
</target>
<target name="pdepend"
description="Generate jdepend.xml and software metrics charts 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=${source}/web" />
<arg path="${source}" />
</exec>
</target>
<target name="phpmd"
description="Generate pmd.xml using PHPMD">
<exec executable="phpmd">
<arg path="${source}" />
<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}/web" />
</exec>
</target>
<target name="phpcpd"
description="Generate pmd-cpd.xml using PHPCPD">
<exec executable="phpcpd">
<arg value="--log-pmd" />
<arg value="${basedir}/build/logs/pmd-cpd.xml" />
<arg value="--exclude" />
<arg value="${basedir}/web" />
<arg path="${source}" />
</exec>
</target>
<target name="phploc"
description="Generate phploc.csv">
<exec executable="phploc">
<arg value="--log-csv" />
<arg value="${basedir}/build/logs/phploc.csv" />
<arg value="--exclude" />
<arg value="${basedir}/web" />
<arg path="${source}" />
</exec>
</target>
<target name="phpcs"
description="Generate checkstyle.xml using PHP_CodeSniffer">
<exec executable="phpcs" output="/dev/null">
<arg value="--report=checkstyle" />
<arg value="--report-file=${basedir}/build/logs/checkstyle.xml" />
<arg value="--standard=${basedir}/build/phpcs.xml" />
<arg value="--ignore=${source}/web" />
<arg path="${source}" />
</exec>
</target>
<target name="phpdoc"
description="Generate API documentation using PHPDocumentor">
<exec executable="phpdoc">
<arg value="--directory" />
<arg path="${source}" />
<arg value="--target" />
<arg path="${basedir}/build/api" />
<arg value="--ignore" />
<arg path="${basedir}/web" />
</exec>
</target>
<target name="phpcb"
description="Aggregate tool output with PHP_CodeBrowser">
<exec executable="phpcb">
<arg value="--log" />
<arg path="${basedir}/build/logs" />
<arg value="--source" />
<arg path="${source}" />
<arg value="--ignore" />
<arg path="${basedir}/web" />
<arg value="--output" />
<arg path="${basedir}/build/code-browser" />
</exec>
</target>
<target name="build" depends="clean,parallelTasks,phpunit,phpcb"/>
</project>
Et j'obtiens des erreurs de ce type
pdepend:
[exec] PHP_Depend 0.10.5 by Manuel Pichler
[exec] Parsing source files:
[exec] phpcpd 1.3.2 by Sebastian Bergmann.
[exec] PHP Fatal error: Allowed memory size of 262144000 bytes exhausted (tried to allocate 71 bytes) in /usr/share/pear/PHPCPD/Detector.php on line 115
[exec] PHP Stack trace:
[exec] PHP 1. {main}() /usr/bin/phpcpd:0
[exec] PHP 2. PHPCPD_TextUI_Command::main() /usr/bin/phpcpd:51
[exec] PHP 3. PHPCPD_Detector->copyPasteDetection() /usr/share/pear/PHPCPD/TextUI/Command.php:216
[exec] PHP 4. token_get_all() /usr/share/pear/PHPCPD/Detector.php:115
[exec] Result: 255
phploc:
[exec] phploc 1.6.1 by Sebastian Bergmann.
[exec] PHP Fatal error: Allowed memory size of 262144000 bytes exhausted (tried to allocate 71 bytes) in /usr/share/pear/PHPLOC/Analyser.php on line 279
[exec] PHP Stack trace:
[exec] PHP 1. {main}() /usr/bin/phploc:0
[exec] PHP 2. PHPLOC_TextUI_Command::main() /usr/bin/phploc:51
[exec] PHP 3. PHPLOC_Analyser->countFiles() /usr/share/pear/PHPLOC/TextUI/Command.php:215
[exec] PHP 4. PHPLOC_Analyser->countFile() /usr/share/pear/PHPLOC/Analyser.php:170
[exec] PHP 5. token_get_all() /usr/share/pear/PHPLOC/Analyser.php:279
[exec] Result: 255
Que dois-je faire pour le résoudre? Si je supprime manuellement les gros fichiers du répertoire, alors la compilation passe, mais je veux que la compilation s'exécute automatiquement en vérifiant la base de code de svn qui aura ces gros fichiers.
Ques4 - Puis-je configurer ma caisse de telle manière que ces fichiers ne soyez pas vérifié?
2 réponses
pour chaque cible, vous pouvez utiliser la propriété fileset ou ajouter des répertoires d'exclusion manuellement
<target name="phploc" description="Measure project size using PHPLOC">
<exec executable="phploc">
<arg value="--log-csv"/>
<arg value="${basedir}/build/logs/phploc.csv"/>
<arg value="--exclude"/>
<arg value="${src}/api/"/>
<arg value="--exclude"/>
<arg value="${src}/external/"/>
<arg path="${src}"/>
</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=/dir/one/,/dir/two/"/>
<arg path="${src}"/>
</exec>
</target>
<target name="phpcpd" 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="${src}/api/"/>
<arg value="--exclude"/>
<arg value="${src}/exclude/"/><arg path="${src}"/>
</exec>
</target>
j'Espère que ma réponse vous sera utile pour quelqu'un.
dans mon projet il y a certains répertoires et certains fichiers php qui sont de très grande taille en raison de laquelle ma construction est en panne et je souhaitez exclure dans mon construire.xml
Il y a certains fichiers qui ne sont pas php mais .dat donc devrais-je mentionner ces fichiers dans le --ignorer aussi?
Ce que je fais dans ce cas est de faire une copie des fichiers nécessaires, et de travailler à partir de là. Copier tout le répertoire et supprimer certains fichiers, ou copiez simplement les fichiers nécessaires. Dans le premier cas, le find
programme:
cp /my/large/project /tmp/work
find /tmp/work -name "*.dat" -delete
find /tmp/work -size 500k -delete
dans ce dernier cas, j'utilise ant <copy>
tâche:
<copy todir="${dir.source.our}" includeEmptyDirs="true">
<fileset dir="${dir.source}/ext" includes="${glob.source.our}"/>
</copy>
PHP Fatal error: Allowed memory size of 262144000 bytes used
vous devrez augmenter la taille de la mémoire PHP en php.ini.
Recherche pour memory_limit
et définissez la valeur à quelque chose comme 512 MO, par exemple,
memory_limit = 512M