danbettles / codesniffer-standard
A PHP_CodeSniffer 标准主要查找废弃的调试代码。
Requires (Dev)
- phpunit/phpunit: ^7.0
- squizlabs/php_codesniffer: ^3.5
This package is auto-updated.
Last update: 2024-09-13 01:59:18 UTC
README
‼️ 我的 PHP_CodeSniffer 标准版本适用于 PHP_CodeSniffer 3 和 PHP 7.3+。 如果您正在运行旧代码,则请考虑使用版本 1.0.0。
‼️ 请参阅“单元测试”部分,了解如何在无需“安装”的情况下对自定义 PHPCS 标准进行单元测试。
Sniffs
错误
- PHP 调试函数(如
print_r和var_dump)是禁止使用的,因为我从不用它们做任何除了调试以外的事情。
警告
-
PHP 输出函数(如
print和echo)被认为是可疑的,因为我很少(如果有的话)在面向对象的代码中用它们做除了调试以外的事情,而且我倾向于在输出模板中使用短 echo 标签(<?= ?>),因此我预期它们也不会在其他地方出现。 -
PHP 脚本终止函数(如
exit和die)被认为是可疑的,因为在结构良好的代码中它们不需要使用;我只在调试时使用它们。我认为在框架中使用这些函数是不良的做法,因为它们可能会阻止应用程序干净地关闭,这可能会导致很难找出输出过滤器(或类似的问题)为什么没有被应用。 -
JavaScript 的
alert函数(如window.alert())被认为是可疑的,因为它可能更多地用于调试而不是其他任何东西。 -
似乎包含调试代码的注释将成为警告的主题。调试代码永远不应该被提交,即使它是被注释的。至少,注释的调试代码是垃圾,不想要的噪音,而且没有理由通过留下它们使代码更难理解。
-
不管怎样,
TODO和FIXME标签都标志着前方潜在的难题。
安装说明
-
下载并解压缩,或使用 Git 克隆项目到
DanBettles目录。 -
使用它:如果将代码放在 PHPCS 标准目录中,请通过
--standard=DanBettles传递;如果它位于其他地方,请通过--standard=/path/to/DanBettles传递。
单元测试
我在升级 PHP_CodeSniffer 3 的单元测试时遇到了一些困难,而且我仍然不喜欢你作为通常 PHPCS 方法的一部分将自定义标准“安装”。经过一些调查,我尝试了 Payton Swick 的解决方案,https://payton.codes/2017/12/15/creating-sniffs-for-a-phpcs-standard/#writing-tests,效果很好。谢谢,Payton。
Payton Swick 的解决方案允许你在项目内部单独测试你的自定义标准。我对他的想法进行了进一步的扩展,创建了一个有合理观点的测试用例基类,这使得测试你的嗅探器变得简单:如果你遵循通常的 PHPUnit 规范,那么它很简单;它很简单,因为它涉及以更自然的方式使用 PHPUnit。