Как избежать суперглобальных значений с помощью PHPMD

Мне очень нравится phpmd для обеспечения минимального уровня качества кода в наших PHP-проектах. Теперь мне нравится добавлять правило для обнаружения использования суперглобальных переменных. Но я не хочу включать весь спорный набор правил. Я попробовал следующую строку (phpmd установлен с композитором):

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

Но вывод следующий:

Cannot find specified rule-set "Superglobals".

Кто-нибудь знает, как добавить одно правило в phpmd?


person Trendfischer    schedule 14.01.2015    source источник
comment
Не могли бы вы немного больше рассказать о том, что не работаете? Что происходит, когда вы запускаете это?   -  person halfer    schedule 14.01.2015
comment
Я отредактировал сообщение и скопировал вывод команды.   -  person Trendfischer    schedule 14.01.2015
comment
Просто догадываюсь, вы пробовали нижний регистр? Все остальные есть.   -  person halfer    schedule 14.01.2015
comment
Да, пробовал строчными, первое, что я тоже догадался. После тщательного изучения документации решение, вероятно, заключается в определении набора правил.xml, но я надеюсь, что есть более простое решение.   -  person Trendfischer    schedule 14.01.2015


Ответы (1)


Я создал файл 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>

Чтобы использовать эти правила, вы можете использовать следующую команду (phpmd установлен локально в вашем проекте с композитором):

 vendor/bin/phpmd src/ text phpmd.xml 

Более подробную информацию можно найти на http://phpmd.org/documentation/creating-a-ruleset.html

person Trendfischer    schedule 15.01.2015