danbettles/codesniffer-standard

A PHP_CodeSniffer 标准主要查找废弃的调试代码。

v2.0.0 2020-02-12 15:09 UTC

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_rvar_dump)是禁止使用的,因为我从不用它们做任何除了调试以外的事情。

警告

  • PHP 输出函数(如 printecho)被认为是可疑的,因为我很少(如果有的话)在面向对象的代码中用它们做除了调试以外的事情,而且我倾向于在输出模板中使用短 echo 标签(<?= ?>),因此我预期它们也不会在其他地方出现。

  • PHP 脚本终止函数(如 exitdie)被认为是可疑的,因为在结构良好的代码中它们不需要使用;我只在调试时使用它们。我认为在框架中使用这些函数是不良的做法,因为它们可能会阻止应用程序干净地关闭,这可能会导致很难找出输出过滤器(或类似的问题)为什么没有被应用。

  • JavaScript 的 alert 函数(如 window.alert())被认为是可疑的,因为它可能更多地用于调试而不是其他任何东西。

  • 似乎包含调试代码的注释将成为警告的主题。调试代码永远不应该被提交,即使它是被注释的。至少,注释的调试代码是垃圾,不想要的噪音,而且没有理由通过留下它们使代码更难理解。

  • 不管怎样,TODOFIXME 标签都标志着前方潜在的难题。

安装说明

  1. 下载并解压缩,或使用 Git 克隆项目到 DanBettles 目录。

  2. 使用它:如果将代码放在 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。