使用 psalm --find-unused-code 命令可以检查项目中未使用的变量和参数。该工具会扫描代码库,识别出声明但从未被读取或调用的局部变量、函数参数以及类属性,并输出具体的文件路径和行号,帮助开发者清理冗余代码。

如何配置 Psalm 以启用未使用代码检查?
在 psalm.xml 配置文件中,需要确保 <plugins></plugins> 部分启用了 UnusedCode 插件。默认情况下,Psalm 可能不会开启此检查,因此必须显式添加插件配置才能生效。配置完成后,运行扫描命令即可获取报告。

<?xml version="1.0"?>
<psalm errorLevel="1">
<projectFiles>
<directory name="src" />
</projectFiles>
<plugins>
<pluginClass class="Psalm\Plugin\UnusedCode" />
</plugins>
</psalm>
上述配置片段展示了标准的 psalm.xml 结构。关键部分是 <pluginclass class="Psalm\Plugin\UnusedCode"></pluginclass>,它加载了用于检测未使用代码的插件。如果没有这一行,即使运行 --find-unused-code 标志,Psalm 也可能忽略未使用的定义或仅给出警告而非错误。确保 errorLevel 设置合理,通常级别 1 到 3 适合大多数项目,以便在早期发现潜在问题。
未使用检查如何处理不同作用域的变量?
Psalm 的未使用代码检查区分局部变量、函数参数和类属性。对于局部变量,如果它们在声明后从未被读取,会被标记为未使用。对于函数参数,如果参数在函数体内未被引用,也会被指出。类属性则更为严格,除非通过魔术方法访问或被反射使用,否则未直接引用的属性会被视为未使用。这种细粒度的检查有助于保持代码的整洁性。

<?php
function example($unusedParam, $usedParam) {
$unusedVar = 10;
echo $usedParam;
}
class MyClass {
public $unusedProperty;
public $usedProperty;
public function __construct() {
$this->usedProperty = "value";
}
}
这段代码演示了不同类型的未使用元素。$unusedParam 是未使用的函数参数,$unusedVar 是未使用的局部变量,而 $unusedProperty 是未使用的类属性。运行 Psalm 检查时,这些元素都会被报告。注意,如果属性通过 __get 或 __set 魔术方法访问,Psalm 可能无法静态检测到其未使用状态,这需要开发者手动审查或使用其他工具辅助验证。
未使用检查对性能优化有何具体影响?
移除未使用的变量和参数可以减少内存占用和提高代码可读性。虽然单个未使用变量的影响微乎其微,但在大型项目中,累积的未使用代码可能导致维护困难和潜在的混淆。通过定期运行 --find-unused-code,团队可以持续清理代码库,确保只有必要的逻辑存在。这不仅提升了代码质量,还减少了因遗留代码引发的 bug 风险。


















