Laravel工具:4种静态分析工具
#php #linting #staticcodeanalysis

Laravel工具:4个有用的静态分析工具


iSAAC SMITH的照片

多年来,我学到了一些您可以用来开发PHP和Laravel应用程序的惊人工具的范围。我对此做了一些推文,但是不用一些更广泛的解释我使用这些工具。

彼得·福克斯(Peter Fox)在Twitter上:“作为PHP开发人员,您可以使用大量静态工具。这里有四个位于我的头顶上,我经常去:#php#laravelðoutive𧵠/ Twitter”

作为PHP开发人员,您可以使用大量静态工具。这是我经常去的头顶的四个:#php #laravelð§µ

什么是静态分析工具?

为了尽可能地说,静态分析工具会查看代码并确定其所看到的。在此列表中,将有一些工具,即成绩性能,发现诸如未使用的代码之类的内容,查看并提高代码的可读性,甚至可以执行对代码的升级。

品脱

从技术上讲,品脱是Laravel的官方裁剪工具,是新的。尽管制造了Laravel,但它首先可以在任何PHP项目中使用,并且比Pint在引擎盖下使用的PHP CS固定器好一点。 Linting是静态分析工具的通用名称,该工具将格式化代码并尝试应用小型更改以使代码可通过一组标准可读。

在编写大多数PHP代码时,将开发为所谓的PSR-12 standard,我们还拥有PSR-1,现在已弃用PSR-2标准。

PSR编码标准不涵盖所有内容,尽管经常是look at what additional rules you might apply的好主意。

这里的关键要点和好处是可读性和协作。如果您自己工作,不一定会带来巨大的进步。如果您作为一个团队合作并定期合作,将对大家有很大的好处。一些PSR标准在那里有助于确保代码合并的冲突较少。同样,仅仅建立您之间共享的一组规则意味着代码将以您的大脑看待并从肌肉记忆中更快地理解的方式编写。

Phpstan(&Larastan)

PHPStan是PHP开发人员的有用工具。 PHPSTAN的目的是查看代码如何交互,例如,它可以查看变量的用法,并查找字符串变量是否将作为数组参数将其用作函数。当然,如果发生的话,这将是一个错误。同样,phpstan能够找到不再使用的代码。

phpstan非常有用,因为许多开发人员都希望利用PHP7和PHP8向前推进的类型。尽管没有找到一个类型的项目中的所有位置,但这并不容易做到。 PHPSTAN可以通过查找由类型的提示或phpdoc标签记录的参数或返回类型来做到这一点。

如果您想忽略过去的问题,而只专注于不引入新问题,则甚至可以创建所谓的a baseline的功能。

如果您正在开发使用Larastan的软件包或应用程序,则需要在phpstan上安装Larastan。这是因为扩展将了解更多在Laravel中发生的魔法,例如具有动态属性和范围的模型。

总而言之,这里的好处实际上归结为尽早发现错误。您使用phpstan设置的层次越高,您在运行时会发现的愚蠢错误越有可能使自己免于痛苦地调试生产问题。

Phpinsights

我会说,总的来说,这个工具很方便,但一开始可能会有些不知所措。这里有许多不同的静态分析。 Insights将为您提供4组分数,代码,复杂性,体系结构和样式。

我将首先从样式的见解开始,这实质上与品脱的处理方式完全相同,但至少可以得分很好。它还将拿起其他一些品脱的东西,例如行计数。

复杂性是纯粹的环境复杂性,这是一种非常简单的方式,说明代码中发生了多少个分支。您可能想提出这个概念。就我个人而言,我发现此默认值有点低,因此我通常会泵起来。也就是说,这是一个很好的指标。

上课时。​​

进入下一个类别体系结构。这涵盖了一些事情,但通常只是简单的命名约定或功能或类的长度。同样,我通常会增加允许的课程的长度,因为我不希望保持如此高的标准,我最终创建了很多课程,只是为了立即封装简单的功能。

最终统计数据是代码,实际上只是遵循Phpstan或Pint可能会发现的许多类似内容。这些可能范围从无用的变量到避免使用某些功能,因为它们的方式是不可预测的。有时可能有点有点,因此如果它们只是为您产生更多噪音,请删除一些规则。

最终我会说洞察力很有趣,并且是快速衡量代码质量的工具,然后使用该初始分数来查看您在重构代码时是否朝着正确的方向移动,但是您肯定需要花时间进行形成您对生成此类指标时使用的规则和方案的看法。

校长

因此,此工具在许多方面都是我在静态分析工具套件中我喜欢的新玩具。它建立在phpstan的组件之上,以便能够为您提供所有类型的构图优点,但它的进一步发展是可以实际修复事物。与Pint可以通过查看代码如何结构构造的品脱,Rector可以分析更多使用情况,并开始替换功能调用或以后的PHP版本中可用的新运营商。这是非常奇妙的,随着更多的人使用它,我们可以开始看到世界上更少的遗产负担。

对于PHP甚至PHPUNIT等事物的简单规则集,值得使用,但也有执行Laravel代码升级的规则。诸如PHP 7之前将工厂更改为新型风格的事情。最近要指出的一件事是,如果您正在与Laravel合作,则使用校长安装的规则,但现在在their own package中维护进行安装。

它做得很好,但我确实建议在代码库中有些谨慎,在运行Fix命令之前,有很多旧的债务。您可以使用Dry-Run选项运行命令,该选项仅发现和显示问题,而不是立即应用更改。最好在添加到旧代码库时一次尝试一个规则,查看更改然后继续。某些规则可能会产生不利影响,例如将JSON_ENCODE和JSON_DECODE升级为抛出异常的规则。

我的个人感觉是校长是一种工具,更多的PHP开发人员将来应该习惯使用。它可以使您的开发人员使用过时的操作和PHP中的功能之间有所不同,并使升级代码库更容易与其他爱一起使用。

最后一件事

如果您现在还没有注意到,实际上,这些PHP工具具有共同点,那就是,在这些高效的Laravel开发人员中,有3个是由官员制造的已知的开发人员Nuno Maduro

我知道他接受Github的赞助,请考虑一次捐赠。同样考虑查看PHPSTAN,PHP CS FIXER和RECTOR的开发人员,他们使这些很棒的工具成为可能。

谢谢您的阅读!

我是彼得·福克斯(Peter Fox),他是英国的软件开发人员,他与拉拉维尔(Laravel)合作。感谢您阅读我的文章,如果您想鼓励我写更多这样的文章,请考虑dropping a small one-off donation!我所有的内容都是可以自由阅读的,我希望将来能以这种方式保持这种方式。