PhpStorm原生Line of Code功能已移除,推荐使用Statistic插件替代;大项目建议用命令行find+wc -l;手写PHP脚本需注意路径过滤、换行符处理及扩展名精准判断。

PhpStorm 自带的 Line of Code 功能(Tools → Analyze → Line of Code)在较新版本中已被移除,直接点开会报错或无响应——别浪费时间找它了,得换路子。
用 Statistic 插件替代原生功能
Statistic 是目前 PhpStorm 中最稳定、可配置性最强的行数统计插件,支持按文件类型、目录、是否排除注释/空行等维度筛选。
- 安装路径:
Settings → Plugins → Marketplace搜索Statistic,选作者为Anton Makeev的那个(不是同名但无更新的旧版) - 启用后右键项目根目录 →
Statistic → Show statistic,弹窗即显示总行数、代码行、注释行、空行等分类数据 - 关键设置项在
Settings → Other Settings → Statistic:勾选Count only source files可跳过vendor、node_modules;Ignore files matching填**/tests/**,**/*.test.php能排除测试文件
命令行方式更准,且不依赖 IDE 状态
Statistic 插件对大项目(>10 万行)可能卡顿或漏统计,尤其当文件编码含 BOM 或混用 CRLF/LF 时。此时应切到终端执行:
find . -name "*.php" -not -path "./vendor/*" -not -path "./node_modules/*" -not -path "./.git/*" | xargs wc -l
注意点:
立即学习“PHP免费学习笔记(深入)”;
-
wc -l统计的是物理行数(含空行和注释),不是“有效代码行”;如需过滤空行,改用awk 'NF {lines++} END {print lines+0}' -
find默认会遍历隐藏目录(如.idea),必须显式用-not -path排除,否则结果虚高 20% 以上 - Windows 用户请用 Git Bash 或 WSL,原生 cmd 的
find不兼容 POSIX 语法
PHP 脚本统计要防 vendor 和路径陷阱
手写 PHP 脚本看似灵活,但极易踩坑:比如用 scandir() 遍历时没跳过 .git,或用 strpos($file, 'vendor') 导致 myvendor.php 被误杀。
- 正确做法是用
RecursiveDirectoryIterator+ 正则匹配路径分隔符:/[\/](vendor|node_modules|.git)[\/]/ - 读取单文件时别用
file($path),它默认保留换行符,导致count()多算;改用file($path, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES),但注意这会直接丢弃空行——若需单独统计空行,得用file_get_contents()后explode(" ", ...) - 扩展名判断别只写
strpos($file, '.php'),index.php.bak也会被计入;应改用pathinfo($file, PATHINFO_EXTENSION) === 'php'
真正麻烦的不是怎么数,而是「哪些该算、哪些不该算」——软著申报要的是纯 .php 文件总行数,而团队复盘需要剔除 vendor 和测试代码后的有效逻辑行。统计前先明确目标,再选工具,不然重跑三遍都对不上。


















