PHPInsights 入门
发布于 作者: Steve McDougall
PHPInsights 是由 Nuno Maduro 创建的 composer 包,是一个开始分析您的 PHP 应用程序代码质量的绝佳工具。
无论您是代码质量工具的专家还是新手 - PHPInsights 都有一个稳定的学习曲线,随着您知识的提高,您可以快速适应它。开箱即用,它适用于 Laravel、Symfony、Yii、WordPress、Magento 2 等。
它使您能够洞悉您的代码质量、编码风格、应用程序架构以及代码复杂程度。
要开始使用此包,您只需运行一个快速 composer 命令
composer require nunomaduro/phpinsights --dev
然后您就可以开始了,因为它开箱即用,不需要配置。您可以通过运行以下命令行分析特定目录
./vendor/bin/phpinsights
这将运行一系列默认的“嗅探”,为您检查一些基本内容。您将获得如下所示的输出
89.7% 87.5% 94.1% 90.4% Code Complexity Architecture Style Score scale: ◼ 1-49 ◼ 50-79 ◼ 80-100 [CODE] 89.7 pts within 367 lines Comments ...................................................... 64.6 %Classes ....................................................... 12.3 %Functions ...................................................... 1.1 %Globally ...................................................... 22.1 % [COMPLEXITY] 87.5 pts with average of 1.38 cyclomatic complexity [ARCHITECTURE] 94.1 pts within 28 files Classes ....................................................... 75.0 %Interfaces ..................................................... 0.0 %Globally ...................................................... 25.0 %Traits ......................................................... 0.0 % [MISC] 90.4 pts on coding style and 0 security issues encountered
从这里,您可以按 Enter 查看可能报告的代码问题,然后再次按 Enter 查看报告的架构问题,最后再次按 Enter 查看代码样式问题。
接下来,我们可以研究如何根据运行的“嗅探”改进我们的代码。这可以通过配置 PHPInsights 配置、自定义运行的内容以及其他一些选项来完成。要开始,在项目的根目录中创建一个 `phpinsights.php`,然后我们可以开始自定义我们想要运行的内容。
declare(strict_types=1); return [ 'preset' => 'default',];
我们有各种预设选项,具体取决于您使用的框架/平台。为了展示它的工作原理,我将在解释每个部分时逐步构建我的配置文件 - 这样您就可以看到您可能会经历的旅程。
您可以为您的预设使用 `laravel`、`symfony`、`magento2`、`drupal` 或 `default` - 我将使用 Laravel。
declare(strict_types=1); return [ 'preset' => 'laravel',];
您可能希望排除应用程序中您不想“嗅探”或分析的目录。您可以通过添加一个 `exclude` 配置选项来添加这些目录。
declare(strict_types=1); return [ 'preset' => 'laravel', 'exclude' => [ 'database/*', ],];
您可以在配置文件中配置特定的见解,这使您能够设置行长度等事物的选项。
declare(strict_types=1); use PHP_CodeSniffer\Standards\Generic\Sniffs\Files\LineLengthSniff; return [ 'preset' => 'laravel', 'exclude' => [ 'database/*', ], 'config' => [ LineLengthSniff::class => [ 'lineLimit' => 120, 'absoluteLineLimit' => 160, ], ],];
如果我们现在重新运行 PHPInsights,我们将使用我们的配置运行它,这将更具体地针对我们配置的规范。
您的分析将被细分为您需要关注的关键区域,从您的代码开始。分析代码的结构和质量,这在 PHPInsights 网站上得到了极好的 记录,向您展示了可用的嗅探和见解,如果您想禁用或配置针对您的代码运行的任何见解类,可以这样做。
接下来是应用程序的架构,它不像 Deptrac 那样深入,但涵盖了几个特定区域,以确保一致性和标准,而不是架构规则。
然后我们转向代码的复杂性,这是一个较小的见解。它计算您的“圈复杂度”,分数越低,您的代码就越容易理解。代码在功能方面可能很复杂,但仍然易于理解。
最后,它检查代码的样式,这有点像 Easy Coding Standards 或 PSR-2 或 PSR-12。同样,有关此见解的文档 非常广泛,并提供了有关如何配置特定见解以使您的代码完全符合您的要求的示例。
与我关于 Laravel Pint 的教程 不同,我没有为 PHPInsights 提供默认配置,因为每次我使用它时,都需要针对项目或团队进行特定配置。我最近接替 Nuno 成为了该项目的维护者,与 Chris 一起,我们一直在就如何改进此包以及该包的未来进行很多讨论。有一些非常令人兴奋的讨论,我们希望今年能有更多的话题可谈。