etsglobal/php-static-analysis

PHP项目静态分析工具配置

安装次数: 19 324

依赖者: 1

建议者: 0

安全: 0

星标: 0

关注者: 14

分支: 0

开放问题: 0

类型:phpcodesniffer-standard


README

此仓库包含ETSGlobal PHP应用程序使用的静态分析工具的基础配置。

它包括

  • PHP_CodeSniffer配置和自定义嗅探器
  • PHP Mess Detector配置
  • PHPStan配置

安装

使用composer

composer require etsglobal/php-static-analysis --dev

默认情况下,它将安装squizlabs/php_codesniffer,但您可以手动安装其他可选工具

composer require phpmd/phpmd phpstan/phpstan --dev

使用方法

PHP_CodeSniffer

在您的项目根目录中,添加一个包含以下内容的phpcs.xml文件

<?xml version="1.0"?>
<ruleset name="ETSGlobal Coding Standard" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
         xsi:noNamespaceSchemaLocation="../../vendor/squizlabs/php_codesniffer/phpcs.xsd">
    <rule ref="./vendor/etsglobal/php-static-analysis/lib/phpcs/phpcs.xml" />
</ruleset>

然后,运行它

vendor/bin/phpcs src

如果需要,您可以通过向您的phpcs.xml添加异常来排除一些规则

    ...
    <rule ref="SlevomatCodingStandard.Functions.TrailingCommaInCall">
        <!-- Ignore missing trailing commas in multiline function calls -->
        <exclude name="SlevomatCodingStandard.Functions.TrailingCommaInCall.MissingTrailingComma"/>
    </rule>
    ...

PHP Mess Detector

首先,确保您已安装了phpmd/phpmd

composer require phpmd/phpmd --dev

然后,在您的项目根目录中,添加一个包含以下内容的phpmd.xml文件

<?xml version="1.0"?>
<ruleset name="ETSGlobal ruleset"
         xmlns="http://pmd.sf.net/ruleset/1.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd"
         xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd">
    <description>
        ETSGlobal ruleset
    </description>

    <rule ref="./vendor/etsglobal/php-static-analysis/lib/phpmd/phpmd.xml"/>
</ruleset>

现在运行phpmd

vendor/bin/phpmd src text phpmd.xml

PHPStan

首先,确保您已安装了phpstan/phpstan

composer require phpstan/phpstan --dev

然后,在您的项目根目录中,添加一个包含以下内容的phpstan.neon文件

includes:
    - vendor/etsglobal/php-static-analysis/lib/phpstan/phpstan.neon

现在可以运行phpstan了

vendor/bin/phpstan analyse --level=max src