Конфигурация инструментов контроля качества и разработки, соответствующих стандартам кодирования LoVullo Associates. Этот пакет в сочетании с lovullo/phpqatools
предназначен стать основой для новых проектов PHP.
Просто запросите его в composer.json
вашего проекта.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:
Например:
$ ant phpcs phpmd phpcpd
При настройке непрерывной интеграции (т. е. Jenkins) composer
должен загрузить и установить этот репозиторий, прежде чем вы сможете запускать задачи ant
. Добавьте шаг сборки «Выполнение оболочки» в Jenkins с помощью следующей команды:
$ composer install -o
Затем добавьте шаг сборки «Вызов Ant» со следующей целью:
build-qa
Это запустит check_mergeconflicts
, phplint
, phpunit
, phpcs-ci
, pdepend
, phpmd-ci
, phpcpd-ci
, phploc-ci
и phpdox
.
Для заданий, которые должны выполняться быстро и требуют лишь минимального количества проверок качества, вместо этого запустите следующие цели:
build-quick
Это запустит check_mergeconflicts
, phplint
и phpunit
.
Добавьте дополнительные цели сборки в файл build.xml
, соответствующие вашему конкретному проекту.
Включенный build.xml
предполагает, что все инструменты контроля качества установлены в ./vendor/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 >
Если вы не хотите, чтобы определенные инструменты контроля качества запускались для проекта, добавьте одно или несколько из следующих свойств 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 >