lovullo/phpqaconfig

此软件包已被弃用且不再维护。未建议替代软件包。

LoVullo Associates 的 PHP QA 和开发工具配置。

1.1.11 2018-11-09 21:24 UTC

README

针对 LoVullo Associates 编码标准的 QA 和开发工具配置。此软件包与 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 目标

  • composer
  • phpunit
  • phpcs
  • phpmd
  • phpcpd
  • phploc

例如

$ ant phpcs phpmd phpcpd

持续集成

在配置持续集成(例如 Jenkins)时,必须先下载并安装此存储库,然后才能运行 ant 任务。在 Jenkins 中添加一个带有以下命令的“执行 Shell”构建步骤

$ composer install -o

然后,添加一个带有以下目标的“调用 Ant”构建步骤

build-qa

这将运行 check_mergeconflictsphplintphpunitphpcs-cipdependphpmd-ciphpcpd-ciphploc-ciphpdox

对于需要快速运行且仅需要少量 QA 检查的工作,请运行以下目标

build-quick

这将运行 check_mergeconflictsphplintphpunit

根据您的特定项目,在 build.xml 文件中添加适当的附加构建目标。

自定义

QA 工具位置

包含的 build.xml 假设所有 QA 工具都已安装到 ./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>

PHP Lint 配置

默认情况下,包含的 build.xml 在项目根目录的 vendor/ 目录之外的所有 PHP 文件上运行 php -l。您可以使用 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>

PHPUnit 配置

默认情况下,包含的 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>

PHP_CodeSniffer 配置

您可以通过指定 phpcsignore 属性来自定义在 phpcs 检查中要忽略的文件。

<?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 目录被排除在检查之外。

您可以通过覆盖 phpcsstandard 属性来更改 PHP_CodeSniffer 标准的使用。

<?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 属性来自定义在 phpmd 检查中要忽略的文件。

<?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 属性来自定义在 phpcpd 检查中要忽略的文件。

<?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 目录被排除在检查之外。

phpDox 配置

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

如果您不希望某些 QA 工具在项目中运行,请在包含基本 build.xml 文件之前添加一个或多个以下 disable 属性。

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