PHP_CodeSniffer规则文档[关闭]

2024-05-22

在哪里可以找到有关的文档PHP_CodeSniffer http://pear.php.net/package/PHP_CodeSniffer可用规则吗?在我看来,规则是存在的,但没有人知道它们的列表及其属性。我面临着根本问题,我想自定义一个标准并强制大括号在语句除以一个空格后的同一行上开始,但看不到任何方法来做到这一点。这只是一个问题,但我还有很多其他问题。 谢谢。


查看源代码可能会令人恐惧,但最终,如果您想列出所有可能的规则(或sniffs as PHP_CodeSniffer https://github.com/squizlabs/PHP_CodeSniffer调用他们)你必须查看源代码。

我遇到了同样的问题,我使用了三种技术:

1. 选项-s

phpcs命令有一个选项,可以输出未跟踪的嗅探的标识符。让我们看一个例子:

$ phpcs -p -s --extensions=php /path/to/my/source/code

...E...E....W.....W..E.............W........................  60 / 723 (8%)
.......................W.................................... 120 / 723 (17%)
.............................W..W....E..................E..E 180 / 723 (25%)

----------------------------------------------------------------------
 60 | ERROR   | [x] Line indented incorrectly; expected at least 2 spaces,
    |         |     found 0 (Generic.WhiteSpace.ScopeIndent.Incorrect)
----------------------------------------------------------------------
 61 | WARNING | Comment refers to a TODO task "Improve readability"
    |         | (Generic.Commenting.Todo.TaskFound)
----------------------------------------------------------------------

... output has been truncated
Time: 2 mins, 9.46 secs; Memory: 25.5Mb

在报告中,每个错误或警告都会输出嗅探。

2. ruleset.xml源代码中的文件

项目中必须遵循或忽略哪些规则的配置通常定义在ruleset.xml文件。 PHP_CodeSniffer 源代码有一些示例。 PHP_CodeSniffer 定义了几个标准:Generic、PSR1、PSR2...每个标准都有一个ruleset.xml文件。您可以向他们学习如何创建自己的。

这种技术要求您查看源代码,但您只需要阅读与项目中可能拥有的类似的文件。例如,您可以找到ruleset.xml https://github.com/squizlabs/PHP_CodeSniffer/blob/master/src/Standards/PSR2/ruleset.xmlPSR2 标准下的文件CodeSniffer/Standards/PSR2 folder.

3.最后是源代码

最后,如果你想要完整的嗅探列表,你需要extract它们来自源代码。让我们解码一下嗅探标识符是如何构建的。

很容易知道实现嗅探的 PHP 类。例如,我们以Generic.Commenting.Todo.TaskFound。前三个标记的含义是:

  1. Generic:它是标准,它定义了标准的文件夹CodeSniffer/Standards/Generic
  2. Commenting:是标准下的sniff组,同时也指向标准内的一个文件夹:CodeSniffer/Standards/Generic/Sniffs/Commenting
  3. Todo:它是嗅探,它是在一个名为的类中实现的<sniff name>Sniff.php

所以,我们有Generic.Commenting.Todo.TaskFound嗅探是在CodeSniffer/Standards/Generic/Sniffs/Commenting/TodoSniff.php https://github.com/squizlabs/PHP_CodeSniffer/blob/master/src/Standards/Generic/Sniffs/Commenting/TodoSniff.php class.

我们可以反过来做。如果我们知道 PHP 类的路径,我们就能够知道 PHP_CodeSniffer 将报告的嗅探。例如,该类实现于CodeSniffer/Standards/Squiz/Sniffs/NamingConventions/ValidFunctionNameSniff.php https://github.com/squizlabs/PHP_CodeSniffer/blob/master/src/Standards/Squiz/Sniffs/NamingConventions/ValidFunctionNameSniff.php将生成带有标识符的嗅探Squiz.NamingConventions.ValidFunctionName.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP_CodeSniffer规则文档[关闭] 的相关文章