用于测试的PHPMD和PHPCS Camelcase

时间:2017-05-19 22:28:22

标签: phpmd phpcs

我刚刚在我的项目中安装了PHPMDPHPCS

现在,我想稍微定制它们,但似乎无法实现它。

我想要为我的所有项目删除2个警告:

  • phpcs:公共方法名称MyTests::my_test_that_should_pass不是驼峰格式
  • phpmd:方法my_test_that_should_pass不是驼峰式的

使用PHPMD,我尝试更改:.composer/vendor/phpmd/phpmd/src/main/resources/rulesets/controversial.xml并将allow-underscore-test设置为true,如提到here

使用PHPCS,我真的不知道该怎么做。

任何想法???

https://phpmd.org/rules/controversial.html

1 个答案:

答案 0 :(得分:3)

PHPCS使用名为ruleset.xml的文件来创建自己的自定义标准。它的文档在这里:https://github.com/squizlabs/PHP_CodeSniffer/wiki/Annotated-Ruleset

如果您想要项目的特定标准,可以在项目的根目录中包含phpcs.xml文件。它与ruleset.xml文件的格式完全相同,甚至可以指定默认情况下需要检查的文件和文件夹。有关的文档位于:https://github.com/squizlabs/PHP_CodeSniffer/wiki/Advanced-Usage#using-a-default-configuration-file

我不知道您现在正在使用PHPCS编码标准,但我假设您使用的是PSR2。

如果您使用phpcs选项运行-s,则会看到包含错误代码的错误消息,如下所示:Method name "MyTests::my_test_that_should_pass" is not in camel caps format (PSR1.Methods.CamelCapsMethodName.NotCamelCaps)。代码就是你需要的位。

对于您的自定义标准,您需要PSR2,但是您不希望PSR1.Methods.CamelCapsMethodName嗅探,因为您显然不希望PHPCS检查驼峰情况。因此,请使用以下内容创建规则集:

<?xml version="1.0"?>
<ruleset name="MyStandard">
    <description>My custom coding standard.</description>
    <rule ref="PSR2">
        <exclude name="PSR1.Methods.CamelCapsMethodName"/>
    </rule>
</ruleset>

保存该文件并将其命名为ruleset.xmlphpcs.xml,然后使用它运行PHPCS:phpcs /path/to/code --standard=/path/to/ruleset.xml

请查看我在评论顶部链接的带注释的规则集文档,因为您可以使用这些规则集执行更多操作。