2011-08-05 24 views
18

Trong dự án của tôi có một số thư mục nhất định và một số tệp php có kích thước rất lớn do xây dựng của tôi không thành công và tôi muốn loại trừ chúng trong của tôi build.xmlLoại trừ các thư mục và tập tin nhất định trong pdepend, phpmd, phpcpd, phpcs, phpdoc, phploc

Ques1- Tôi có phải viết --ignore="path/filename" cho mọi tệp php trong dự án không?

Ques2- Có một số tệp không phải là php nhưng .dat vì vậy tôi cũng nên đề cập đến những tệp này trong số --ignore?

Ques3- Tôi có thể chỉ định loại trừ tệp dựa trên kích thước của chúng sao cho tôi loại trừ tất cả các tệp lớn hơn 500kb không?

tập tin xml hiện tại của tôi trông như thế này:

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

Và Tôi nhận được lỗi như thế này

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 

Tôi nên làm gì để giải quyết nó? Nếu tôi tự loại bỏ các tập tin lớn từ thư mục sau đó xây dựng chỉ cần vượt qua nhưng tôi muốn xây dựng để chạy tự động kiểm tra ra các cơ sở mã từ svn mà sẽ có những tập tin lớn.

Ques4- Tôi có thể định cấu hình thanh toán của mình theo cách sao cho các tệp này không được kiểm tra không?

Trả lời

27

Đối với mỗi mục tiêu mà bạn có thể sử dụng tài sản fileset hoặc thêm loại trừ thư mục bằng tay

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

Hy vọng câu trả lời của tôi sẽ rất hữu ích cho một ai đó.

+6

-1 Không có ví dụ về 'fileset' trong mã mẫu của bạn! – Ben

+1

trong trường hợp bạn cần loại trừ tệp (không phải thư mục), hãy sử dụng tùy chọn --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?

Điều tôi đang làm trong trường hợp này là sao chép các tệp cần thiết và làm việc từ đó. Hoặc là sao chép toàn bộ thư mục và xóa một số tệp nhất định hoặc sao chép chỉ các tệp cần thiết. Trong trường hợp thứ nhất, các chương trình find sẽ làm gì:

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

Trong trường hợp sau, tôi đang sử dụng 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ạn sẽ phải tăng kích thước bộ nhớ PHP trong php .ini. Tìm kiếm memory_limit và đặt giá trị thành giá trị như 512 MB, ví dụ:

memory_limit = 512M 
+1

bạn cũng có thể sử dụng ini_set ('memory_limit', '512M'), chỉ cần đặt nó vào tệp cấu hình và bao gồm nó. –

+1

Điều này không cảm thấy đúng ... – Ben

+0

Các khóa học duy nhất khác là có phân tích thất bại. Chọn một. – demonkoryu

Các vấn đề liên quan