2011-08-05 10 views
18

W moim projekcie są pewne katalogi i niektóre pliki php, które są bardzo duże, dzięki czemu moja kompilacja się nie udała i chcę je wykluczyć w moim build.xmlWykluczenie określonych katalogów i plików w pdepend, phpmd, phpcpd, phpcs, phpdoc, phploc

Ques1- Czy muszę napisać --ignore="path/filename" dla każdego pliku php w projekcie?

Ques2- Istnieją pewne pliki, które nie są php ale .dat więc powinienem wspomnieć te pliki w --ignore też?

Ques3-Czy mogę określić, aby wykluczyć pliki na podstawie ich rozmiaru tak, że wykluczyć wszystkie pliki większe niż 500kb?

Mój obecny plik XML wygląda następująco:

<?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> 

A ja dostaję takie błędy

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 

Co należy zrobić, aby go rozwiązać? Jeśli ręcznie usuwam duże pliki z katalogu, to kompilacja właśnie mija, ale chcę, żeby kompilacja działała automatycznie, sprawdzając bazę kodu z svn, który będzie miał te duże pliki.

Ques4- Czy mogę skonfigurować moje kasowanie w taki sposób, aby te pliki nie zostały pobrane?

Odpowiedz

27

Dla każdego celu można użyć własności fileset lub dodać wykluczyć katalogów ręcznie

<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> 

nadzieję, że moja odpowiedź będzie pomocne dla kogoś.

+6

-1 W przykładowym kodzie nie ma przykładu "zestawu plików"! – Ben

+1

w razie potrzeby wykluczyć pliki (nie katalogów), użyj opcji --names-exclude Select0r

1

In my project there are certain directories and certain php files which are very large in size due to which my build is failing and I want to exclude them in my build.xml

There are certain files which are not php but .dat so should I mention these files in the --ignore too?

W tym przypadku robię kopie potrzebnych plików i pracuję stamtąd. Skopiuj cały katalog i usuń określone pliki lub skopiuj tylko potrzebne pliki. W pierwszym przypadku, program find zrobi:

cp /my/large/project /tmp/work 
find /tmp/work -name "*.dat" -delete 
find /tmp/work -size 500k -delete 

w drugiej używam ant's <copy> task:

<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 exhausted

Będziesz musiał zwiększyć rozmiar pamięci PHP w php .ini. Wyszukaj memory_limit i ustaw wartość na 512 MB, np.

memory_limit = 512M 
+1

możesz również użyć ini_set ('memory_limit', '512M'), po prostu umieść go w pliku konfiguracyjnym i dołącz go. –

+1

To nie jest w porządku ... – Ben

+0

Jedynym innym kursem jest brak analizy. Wybierz jeden. – demonkoryu

Powiązane problemy