IDE 扩展
到目前为止,我们所看到的工具都有一个共同点:它们需要在我们编写代码后才能应用于我们的代码。当然,有总比没有好,但如果这些工具能在我们编写代码时立即给出反馈,那岂不是更好?
许多其它开发人员也是这么想的,因此他们为目前最流行的集成开发环境(Visual Studio Code (VS Code) 和 PhpStorm)创建了扩展:
-
PhpStorm 是 JetBrains 公司推出的一款成熟的商业集成开发环境,它有几种专门针对 PHP 的工具、检查和本章讨论的许多代码质量工具的内置集成。它还有许多有用的扩展。你可以免费试用 30 天。
-
VS Code 是微软公司推出的一款高度灵活的代码编辑器,它拥有大量第三方(部分为商业)扩展,可以将这些工具变成一个集成开发环境,适用于当今几乎所有相关的编程语言。由于代码编辑器本身是免费的,因此越来越受欢迎。
在本节中,我们将为你介绍这两个集成开发环境的三个扩展:
-
适用于 PhpStorm 的 PHP 检查(EA 扩展)
-
适用于 VS Code 的 Intelephense
PHP 检查(EA Extended)
此插件 (https://github.com/kalessil/phpinspectionsea) 适用于 PhpStorm。它将在已有的检查库中添加更多类型的检查,涵盖代码风格、架构或可能的错误等主题。
安装
与所有 PhpStorm 插件一样,安装是通过 File -> Settings -> Plugins
对话框完成的。你可以在供应商的网站( https://www.jetbrains.com/help/phpstorm/managing-plugins.html )上找到如何安装插件的详细信息。只需搜索 EA Extended
即可。请注意,该插件还有第二个版本,即 EA Ultimate
,需要付费购买。我们将不在本书中介绍它。
安装后,并非所有检查都会立即生效。让我们来看看 PhpStorm 检查配置,如图 7.4 所示:

本插件的所有检查功能均可在 Php 检查(EA Extended)部分找到。默认情况下未激活的检查项目可以通过勾选旁边的复选框轻松激活。我们建议在激活其它检查之前阅读文档( https://github.com/kalessil/phpinspectionsea/tree/master/docs ),否则可能会导致规则过多。你可以稍后再查看它们。
使用
PHP 检查(EA Extended)不仅会对问题发出警告,而且还经常提供所谓的快速修复,让集成开发环境为你完成工作。这里有一个例子。请注意第 7 行高亮显示的 if 子句:

将鼠标指针悬停在高亮区域上时,PhpStorm 会弹出一个窗口,提供有关改进建议的进一步说明:

你可以选择同时按 Alt + Shift + Enter
直接修复问题,也可以点击高亮区域显示快速修复气泡。点击气泡后,你将看到一个菜单,其中包含更多选项。也可以按 Alt + Enter
键调用以下对话框:

PhpStorm 现在为你提供了几种修复方法。第一个用 [EA] 标记的是插件的建议。再点击一下即可应用修复:

就是这样!只需几秒钟,你的代码就变得更简短、更易读了。PHP 检查(EA Extended)是对 PhpStorm 的一大补充,因为它提供了合理的检查功能,并将其无缝集成。如果你正在使用这个集成开发环境,就应该毫不犹豫地安装它。
Intelephense
我们要介绍的第二个扩展是 VS Code 的 Intelephense。它是该编辑器最常下载的 PHP 扩展,提供了大量功能(如代码自动补全和格式化),将 VS Code 变成了一个功能全面的 PHP IDE。该扩展还有一个商业高级版本,可提供更多功能。要安装该插件,请按照 Marketplace 网站上的说明操作( https://marketplace.visualstudio.com/items?itemName=bmewburn.vscode-intelephense-client )。
Intelephense 不具备成熟的商业集成开发环境所能提供的各种功能,但对于免费服务来说,它是一个完美的选择。它提供所谓的诊断(类似于 PhpStorm 中的检查),可以在插件设置界面中进行配置,如图 7.9 所示:

使用
下图显示了 Intelephense 诊断功能的运行情况:

从这里可以看出两点。首先,更明显的是 TestClass
下方的红线。将鼠标指针悬停在 TestClass
上,会弹出一个解释窗口: Undefined Type TestClass。这是有道理的,因为这个类并不存在。
其次,更微妙的是,你会发现 $ununsedAttribute
和 $testInstance
的颜色比其它变量略深。这说明了另一个问题,将鼠标悬停在其中一个变量上即可发现:

弹出窗口告诉我们,代码的其它地方没有使用 $unsuserAttribute
。这同样适用于 $testInstance
。
虽然它提供了一些基本的问题检测规则和代码格式,但在撰写本文时,可以说这个插件的重点显然不在干净的代码上。不过,鉴于 VS Code 和该插件都是免费提供的,你手头上已经有了一个不错的 PHP IDE 来开始编码。
总结
在本章中,我们了解了帮助你创建高质量 PHP 代码的最先进的工具。它们将帮助你在软件开发生命周期 (SDLC) 的早期发现问题,从而节省你大量的时间。PHP 社区仍然活跃且富有成效,我们无法涵盖本书中存在的所有出色软件。然而,借助我们在本章中介绍的工具,你现在已经做好了迈向干净代码之旅的准备。
在下一章中,你将了解如何使用已建立的指标以及收集这些指标的必要工具来评估代码质量。到时候那里见!
进一步阅读
如果你想尝试更多代码质量工具,可以考虑以下项目:
-
Exakat (https://www.exakat.io) - 这款工具还涵盖安全问题和性能等方面。它还能自动修复问题。
-
Phan (https://github.com/phan/phan) - 一个静态代码分析器,可以在浏览器中立即试用
-
PHP Insights (https://phpinsights.com/) - 另一个分析器,但在代码、架构、复杂性和风格方面的指标都很容易使用