PHP_CodeSniffer教程

时间:2012-12-06 00:09:33

标签: php coding-style codesniffer

是否有人有任何最新的教程,并包含更复杂的规则处理?我在网上找到的大多数教程都没有处理带有ruleset.xml的1.4.3,而是处理旧的php文件。

其次,我想进行更深入的处理,因为我们公司有不同的编码标准,我需要编写执行代码,并希望有一个良好的起点来理解现有的复杂嗅探及其中的结构。

我们公司使用与公共库不同的标准,因此在阅读代码时,开发人员知道该方法是否来自外部库(PEAR / Zend / etc ...),因为命名约定将指示该方法。如果编码标准不是我们的格式,那么该方法来自外部库,并且很有可能它运行良好,而不需要开发人员重新实现某些东西。

在较大的代码库中,您将看到一个已创建的类和引用的方法,而不会知道源,而无需跟踪堆栈。因此,通过使用不同的标准,课程将脱颖而出。

例如:

$Foo = Foo::Find();    // Mixed case - from a library or PHP itself
$Bar = BAR::Find();    // All uppercase - ours, may need to optimize the Find()

变量声明是相同的,我们在方法和变量上使用尾随下划线来指示私有范围。如果有人正在更改范围解析,他们会删除下划线,并更改/删除私人关键字,以清楚地表明他们了解其更改的后果。

1 个答案:

答案 0 :(得分:1)

从这里开始,但它是基本的:http://pear.php.net/manual/en/package.php.php-codesniffer.coding-standard-tutorial.php

PHP_CodeSniffer附带了大量的嗅探,可以做很多不同的事情。可能值得一看其中一些,看看他们如何使用令牌堆栈。

使用-vv命令行参数也是查看文件如何转换为标记的一种非常好的方法。这将帮助您注册以查找正确的令牌类型,并使用许多嗅探使用的$ phpcsFile-> findNext()和$ phpcsFile-> findPrevious()方法。

这是一个值得关注的小嗅觉: https://github.com/squizlabs/PHP_CodeSniffer/blob/master/CodeSniffer/Standards/PSR2/Sniffs/ControlStructures/ElseIfDeclarationSniff.php

另一个显示令牌堆栈中其他索引的用法: https://github.com/squizlabs/PHP_CodeSniffer/blob/master/CodeSniffer/Standards/PSR2/Sniffs/ControlStructures/ControlStructureSpacingSniff.php