最好的语言也敌不过人类愚蠢:使用PHPStan通过静态分析尽早捕获PHP错误 - madewithlove

19-08-13 banq
                   

PHP是一种动态语言,虽然这肯定有它的好处,但它也意味着在日志中看到调用未定义方法或无效参数计数的错误并不罕见。更糟糕的是,当发生这些类型的错误时,应用程序将简单地崩溃,从而导致糟糕的用户体验和沮丧的客户。

这个问题的解决方案是静态分析。对于像Java和C#这样的语言,这不是什么新东西,它是一个内置的功能,只要编译代码就会执行。

最近出现了各种工具,允许在PHP代码上运行静态分析。仅举几例:PsalmPhanPHPStan。这些工具的目标是在编写第一个测试之前减少错误数量。

PHPStan要求在环境中安装PHP 7.1才能运行,但是它需要分析的代码可以是为PHP 5.6编写的。PHPStan可以通过Composer安装到任何项目中:

composer require --dev phpstan/phpstan

安装后,二进制文件可用于分析目录并输出遇到的任何错误。

vendor/bin/phpstan analyze src

PHPStan具有不同的规则级别,每个级别都比以前更严格。默认情况下,它将使用级别0来检查“明显”的错误,例如传递额外的参数或语法错误。这个级别是启动遗留代码库的好地方,随着时间的推移,可以提高级别以进行更严格的分析。还有一个  最大的是针对静态较真,这将始终运行可用的最高级别的水平。

PHPStan可能会输出某些错误,这些错误不是真正的错误,而是第三方包或框架添加的魔术行为的结果。可以通过Composer 安装相关扩展并在phpstan.neon文件中配置来修复这些错误。

includes:
    - ../vendor/phpstan/phpstan-doctrine/extension.neon

请务必阅读完整的文档,了解可能的内容。

在我们的许多项目中,PHPStan作为CI管道的一部分包含在内。这样做意味着当开发人员编写和审查代码时,他们可以更多地关注核心功能,而不是担心语法和类型错误使其生产。