การกำหนดค่าสำหรับ QA และเครื่องมือการพัฒนาเฉพาะสำหรับมาตรฐานการเข้ารหัสที่ LoVullo Associates แพ็คเกจนี้เมื่อรวมกับ lovullo/phpqatools
มีวัตถุประสงค์เพื่อเป็นฐานสำหรับโปรเจ็กต์ PHP ใหม่
เพียงต้องการมันใน composer.json
ของโปรเจ็กต์ของคุณ
"require-dev" : {
"lovullo/phpqaconfig" : " @stable "
}
หรือ
$ composer require --dev lovullo/phpqaconfig
สร้างไฟล์ build.xml
ในรูทโปรเจ็กต์ของคุณด้วยเนื้อหาต่อไปนี้:
<? xml version = " 1.0 " encoding = " utf-8 " ?>
< project name = " project-name " >
< import file = " ${basedir}/vendor/lovullo/phpqaconfig/build.xml " />
</ project >
สร้างไฟล์ phpunit.xml
ในรูทโปรเจ็กต์ของคุณโดยมีเนื้อหาดังต่อไปนี้:
<? xml version = " 1.0 " encoding = " UTF-8 " ?>
< phpunit verbose = " true " >
< testsuites >
< testsuite name = " ProjectName " >
< directory suffix = " Test.php " >tests/</ directory >
</ testsuite >
</ testsuites >
< logging >
< log type = " coverage-html " target = " build/coverage " />
< log type = " coverage-clover " target = " build/logs/clover.xml " />
< log type = " coverage-crap4j " target = " build/logs/crap4j.xml " />
< log type = " junit " target = " build/logs/junit.xml " logIncompleteSkipped = " false " />
</ logging >
</ phpunit >
ดูส่วน "การปรับแต่ง" ด้านล่างหากคุณมีการกำหนดค่า PHPUnit อยู่ที่อื่น
เมื่อพัฒนา ให้ใช้เป้าหมายมดต่อไปนี้:
ตัวอย่างเช่น:
$ ant phpcs phpmd phpcpd
เมื่อกำหนดค่าการผสานรวมอย่างต่อเนื่อง (เช่น Jenkins) composer
จะต้องดาวน์โหลดและติดตั้ง repo นี้ก่อนจึงจะสามารถรันงาน ant
ได้ เพิ่มขั้นตอนการสร้าง "Execute Shell" ให้กับ Jenkins ด้วยคำสั่งต่อไปนี้:
$ composer install -o
ถัดไป เพิ่มขั้นตอนการสร้าง "Inrigger Ant" โดยมีเป้าหมายต่อไปนี้:
build-qa
สิ่งนี้จะเรียกใช้ check_mergeconflicts
, phplint
, phpunit
, phpcs-ci
, pdepend
, phpmd-ci
, phpcpd-ci
, phploc-ci
และ phpdox
สำหรับงานที่ต้องดำเนินการอย่างรวดเร็วและต้องการการตรวจสอบ QA ในจำนวนน้อยที่สุด ให้รันเป้าหมายต่อไปนี้แทน:
build-quick
สิ่งนี้จะเรียกใช้ check_mergeconflicts
, phplint
และ phpunit
เพิ่มเป้าหมายการ build เพิ่มเติมให้กับไฟล์ build.xml
ของคุณตามความเหมาะสมสำหรับโปรเจ็กต์เฉพาะของคุณ
build.xml
ที่รวมไว้จะถือว่าเครื่องมือ QA ทั้งหมดได้รับการติดตั้งลงใน ./vendor/bin
bin หากติดตั้งไว้ที่อื่น ให้จัดเตรียมคุณสมบัติ toolsdir
ให้กับตำแหน่ง:
<? xml version = " 1.0 " encoding = " utf-8 " ?>
< project name = " project-name " >
< property name = " toolsdir " value = " ${basedir}/bin/ " />
< import file = " ${basedir}/vendor/lovullo/phpqaconfig/build.xml " />
</ project >
ตามค่าเริ่มต้น build.xml
ที่รวมไว้จะรัน php -l
บนไฟล์ PHP ทั้งหมดในโปรเจ็กต์ ยกเว้นไดเรกทอรี vendor/
ในรูทของโปรเจ็กต์ของคุณ คุณสามารถแทนที่การตั้งค่านี้ได้โดยใช้คุณสมบัติ phplintignore
:
<? xml version = " 1.0 " encoding = " utf-8 " ?>
< project name = " project-name " >
< property name = " phplintignore " value = " components/**/*,vendor/**/* " />
< import file = " ${basedir}/vendor/lovullo/phpqaconfig/build.xml " />
</ project >
ตามค่าดีฟอลต์ build.xml
ที่รวมไว้จะถือว่ามีไฟล์ phpunit.xml
อยู่ในไดเร็กทอรีเดียวกันกับตัวมันเอง หากคุณมีไฟล์ phpunit.xml
อยู่ที่อื่นอยู่แล้ว คุณสามารถแทนที่การกำหนดค่าได้ดังนี้:
<? xml version = " 1.0 " encoding = " utf-8 " ?>
< project name = " project-name " >
< property name = " phpunitconfig " value = " ${basedir}/app/ " />
< import file = " ${basedir}/vendor/lovullo/phpqaconfig/build.xml " />
</ project >
คุณสามารถปรับแต่งไฟล์ที่ถูกละเว้นในการตรวจสอบ phpcs
ได้โดยการระบุคุณสมบัติ phpcsignore
:
<? xml version = " 1.0 " encoding = " utf-8 " ?>
< project name = " project-name " >
< property name = " phpcsignore " value = " app/,bin/,vendor/,web/ " />
< import file = " ${basedir}/vendor/lovullo/phpqaconfig/build.xml " />
</ project >
ตามค่าเริ่มต้น เฉพาะไดเรกทอรี vendor
เท่านั้นที่ถูกแยกออกจากเช็ค
คุณสามารถเปลี่ยนสิ่งที่มาตรฐาน PHP_CodeSniffer ใช้โดยการแทนที่คุณสมบัติ phpcsstandard
:
<? xml version = " 1.0 " encoding = " utf-8 " ?>
< project name = " project-name " >
< property name = " phpcsstandard " value = " PSR1,PSR2 " />
< import file = " ${basedir}/vendor/lovullo/phpqaconfig/build.xml " />
</ project >
คุณสามารถปรับแต่งไฟล์ที่ถูกละเว้นในการตรวจสอบ phpmd
ได้โดยการระบุคุณสมบัติ phpmdignore
:
<? xml version = " 1.0 " encoding = " utf-8 " ?>
< project name = " project-name " >
< property name = " phpmdignore " value = " app,bin,vendor,web " />
< import file = " ${basedir}/vendor/lovullo/phpqaconfig/build.xml " />
</ project >
ตามค่าเริ่มต้น เฉพาะไดเรกทอรี vendor
เท่านั้นที่ถูกแยกออกจากเช็ค
คุณสามารถปรับแต่งไฟล์ที่ถูกละเว้นในการตรวจสอบ phpcpd
ได้โดยการระบุคุณสมบัติ phpcpdignore
:
<? xml version = " 1.0 " encoding = " utf-8 " ?>
< project name = " project-name " >
< property name = " phpcpdignore " value = " --exclude vendor --exclude app " />
< import file = " ${basedir}/vendor/lovullo/phpqaconfig/build.xml " />
</ project >
ตามค่าเริ่มต้น เฉพาะไดเรกทอรี vendor
เท่านั้นที่ถูกแยกออกจากเช็ค
<? xml version = " 1.0 " encoding = " utf-8 " ?>
< phpdox xmlns = " http://xml.phpdox.net/config " silent = " true " >
< bootstrap />
< project name = " phpdox " source = " ${basedir}/src " workdir = " ${basedir}/build/phpdox/xml " >
< collector publiconly = " false " backend = " parser " >
< include mask = " *.php " />
< inheritance resolve = " true " />
</ collector >
< generator output = " ${basedir}/build/docs " >
< enrich base = " ${basedir}/build " >
< source type = " build " />
< source type = " phploc " >
< file name = " logs/phploc.xml " />
</ source >
< source type = " git " >
< git binary = " git " />
< history enabled = " true " limit = " 15 " cache = " ${phpDox.project.workdir}/gitlog.xml " />
</ source >
< source type = " checkstyle " >
< file name = " logs/checkstyle.xml " />
</ source >
< source type = " phpunit " >
< file name = " logs/phpunit " />
</ source >
< source type = " pmd " >
< file name = " logs/pmd.xml " />
</ source >
</ enrich >
< build engine = " html " enabled = " true " output = " html " >
< template dir = " ${phpDox.home}/templates/html " />
< file extension = " html " />
</ build >
</ generator >
</ project >
</ phpdox >
หากคุณไม่ต้องการให้เครื่องมือ QA บางตัวรันสำหรับโปรเจ็กต์ ให้เพิ่มคุณสมบัติ disable
ต่อไปนี้อย่างน้อยหนึ่งรายการก่อนที่จะรวมไฟล์ build.xml
ฐาน:
<? xml version = " 1.0 " encoding = " utf-8 " ?>
< project name = " project-name " >
< property name = " disable-phpunit " value = " true " />
< property name = " disable-pdepend " value = " true " />
< property name = " disable-phpmd " value = " true " />
< property name = " disable-phpcs " value = " true " />
< property name = " disable-phpcpd " value = " true " />
< import file = " ${basedir}/vendor/lovullo/phpqaconfig/build.xml " />
</ project >