如何使用 PHPMD 避免超全局变量

How to avoid superglobals using PHPMD

我真的很喜欢 phpmd to ensure a minimum level of code quality in our PHP projects. Now I like to add a rule to dectect the use of superglobals. But I do not want to have the whole controversial ruleset 包括在内。我尝试了以下行(使用 composer 安装了 phpmd):

vendor/bin/phpmd src/ text codesize,design,naming,unusedcode,Superglobals

但输出如下:

Cannot find specified rule-set "Superglobals".

有谁知道如何在 phpmd 中添加单个规则?

我创建了一个文件phpmd.rules.xml,内容如下:

<?xml version="1.0"?>
<ruleset name="No controversial but superglobals"
         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> Rulesets without controversial rules but including the check for superglobals </description> 
    <rule ref="rulesets/codesize.xml" />
    <rule ref="rulesets/design.xml" />
    <rule ref="rulesets/naming.xml" />
    <rule ref="rulesets/unusedcode.xml" />
    <rule ref="rulesets/controversial.xml/Superglobals" />
</ruleset>

要使用这些规则,您可以使用以下命令(使用 composer 在您的项目中本地安装 phpmd):

 vendor/bin/phpmd src/ text phpmd.xml 

可以在 http://phpmd.org/documentation/creating-a-ruleset.html

上找到更多详细信息