SublimeLinter-php未显示未使用代码及phpmd配置问题求助
我之前也遇到过一模一样的问题!默认的SublimeLinter-php用的是PHP自带的语法检查(php -l),它只会检测语法错误,根本不会管未使用的变量、use语句这类问题。要实现这个功能,确实得靠PHPMD或者其他静态分析工具,我来一步步帮你搞定PHPMD的配置:
第一步:正确安装PHPMD并配置环境变量
首先用Composer全局安装PHPMD是最方便的:
composer global require phpmd/phpmd
安装完一定要检查你的系统PATH是否包含Composer的全局bin目录,这是很多人踩坑的地方:
- Mac/Linux:通常是
~/.composer/vendor/bin或者~/.config/composer/vendor/bin,你可以在终端运行echo $PATH确认有没有这个路径,如果没有,得把它加到你的shell配置文件(比如.bashrc、.zshrc)里。 - Windows:路径是
%APPDATA%\Composer\vendor\bin,可以通过命令行echo %PATH%查看,或者在系统环境变量里手动添加。
验证PHPMD是否能正常运行:打开终端,随便找个PHP文件,运行:
phpmd your-test-file.php text unusedcode
如果能输出未使用代码的提示,说明PHPMD本身没问题了。
第二步:配置SublimeLinter启用PHPMD
打开Sublime Text的SublimeLinter用户设置(路径:Preferences > Package Settings > SublimeLinter > Settings),在linters节点里添加PHPMD的配置,同时保留原来的PHP语法检查:
{ "linters": { "phpmd": { "cmd": "phpmd", "args": [ "$file", "text", "unusedcode,cleancode,codesize" ], "disable": false, "excludes": [] }, "php": { "cmd": "php", "args": ["-l"], "disable": false, "excludes": [] } } }
这里的unusedcode规则集就是专门检测未使用变量、use语句、未调用方法的,cleancode和codesize是额外的代码质量规则,你可以根据需要去掉或者添加其他规则集(比如naming)。
如果你的PHPMD路径不在PATH里,直接把cmd改成PHPMD的绝对路径就行,比如Windows下:
"cmd": "C:\\Users\\YourName\\AppData\\Roaming\\Composer\\vendor\\bin\\phpmd.bat"
第三步:重启Sublime Text
配置完后重启一下Sublime,打开有未使用代码的PHP文件,应该就能看到对应的提示了!
如果还是不行,你可以打开SublimeLinter的日志(Tools > SublimeLinter > Show Log Panel),看看有没有报错信息,通常都是路径不对或者PHPMD没安装成功的问题。
另外,如果你觉得PHPMD不好用,也可以试试PHPStan,它的静态分析更严格,检测未使用代码也很精准,安装和配置的思路和PHPMD差不多,你可以根据自己的喜好选择。
内容的提问来源于stack exchange,提问作者John The Tester

