Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。
想要改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。
2年前关闭。
Improve this question
在哪里可以找到有关PHP_CodeSniffer规则的文档?在我看来,规则存在,但没人知道它们的列表及其属性。我遇到了一个基本问题,我想自定义一个标准,并在语句除以一个空格后在同一行上强制花括号开始,并且看不到任何方法。这只是一个问题,但我还有许多其他问题。
谢谢你。
在报告中,每个错误或警告都会输出嗅探。
2.
通常在
该技术要求您查看源代码,但是您只需要读取类似于项目中可能存在的文件的文件即可。例如,您可以在
3.最终,源代码
最后,如果您需要全面的嗅探列表,则需要从源代码中提取它们。让我们解码一下嗅探标识符的构建方式。
很容易知道实现嗅探的PHP类。例如,让我们使用
因此,我们在
我们可以采取另一种方法。如果我们知道PHP类的路径,就可以知道要报告的嗅探PHP_CodeSniffer。例如,在
想要改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。
2年前关闭。
Improve this question
在哪里可以找到有关PHP_CodeSniffer规则的文档?在我看来,规则存在,但没人知道它们的列表及其属性。我遇到了一个基本问题,我想自定义一个标准,并在语句除以一个空格后在同一行上强制花括号开始,并且看不到任何方法。这只是一个问题,但我还有许多其他问题。
谢谢你。
最佳答案
查看源代码可能会令人生畏,但最后,如果要列出所有可能的规则(或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定义了几个标准:通用,PSR1,PSR2等。每个标准都有一个ruleset.xml
文件。您可以从他们那里学习如何创建自己的。该技术要求您查看源代码,但是您只需要读取类似于项目中可能存在的文件的文件即可。例如,您可以在
ruleset.xml
文件夹下找到PSR2标准的 CodeSniffer/Standards/PSR2
文件。3.最终,源代码
最后,如果您需要全面的嗅探列表,则需要从源代码中提取它们。让我们解码一下嗅探标识符的构建方式。
很容易知道实现嗅探的PHP类。例如,让我们使用
Generic.Commenting.Todo.TaskFound
。前三个标记表示:Generic
:它是标准,它定义了标准的文件夹CodeSniffer/Standards/Generic
Commenting
:这是标准下的嗅探组,它也指向标准内的文件夹:CodeSniffer/Standards/Generic/Sniffs/Commenting
Todo
:这是嗅探,它在称为<sniff name>Sniff.php
的类中实现因此,我们在
Generic.Commenting.Todo.TaskFound
类中实现了CodeSniffer/Standards/Generic/Sniffs/Commenting/TodoSniff.php
嗅探。我们可以采取另一种方法。如果我们知道PHP类的路径,就可以知道要报告的嗅探PHP_CodeSniffer。例如,在
CodeSniffer/Standards/Squiz/Sniffs/NamingConventions/ValidFunctionNameSniff.php
中实现的类将生成标识符为Squiz.NamingConventions.ValidFunctionName
的嗅探。关于php - PHP_CodeSniffer规则文档,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16427207/
10-12 14:23