1

有没有人有任何最新的教程,包括更复杂的规则处理?我在网上找到的大多数教程都不处理 1.4.3,使用 ruleset.xml,而是处理旧的 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()

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

4

1 回答 1

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

于 2012-12-06T02:08:49.623 回答