发布时间:2026/7/3 3:00:40
程序代码行数统计脚本
大多数逻辑是本地AI生成的自己进行了组合和微调?php /** * PHP 程序文件有效代码行数统计工具 code_counter.php * * 统计规则: * 1. 忽略行首的空白字符。 * 2. 处理多行注释 \/* ... *\/遇到 \/* 则进入状态直到遇到 *\/ 才会退出状态。 * 3. 处理单行注释 //在非多行注释状态下以 // 开头的行不计入代码。 * 4. 整行全是空白字符的行不计入代码。 * */ define(DEBUG_MODE, false); function code_counter(string $filePath) { // 状态变量追踪是否处于多行注释块内部 $inMultilineComment false; $validCodeLines 0; $fp fopen($filePath, rb); if (!$fp) die(Error: Could not read the file $filePath.\n); $lineNo 0; while ($line fgets($fp)) { $lineNo; $trimmedLine trim($line); // 移除两边空白 if ($trimmedLine ) { if (DEBUG_MODE) echo 00: line $lineNo is empty line\n; continue; // 空白行不计入 } // 是否遇到块注释结束。 这里仅考虑同一行只会出现注释符结束标记后续没有代码和注释 // 最多错误计数1行而已。开始标记也只进行简单处理 if ($inMultilineComment strpos($trimmedLine, */) ! false) { $inMultilineComment false; if (DEBUG_MODE) echo */: line $lineNo is comment end line\n; continue; } if (!$inMultilineComment strpos($trimmedLine, /*) ! false) { $inMultilineComment true; if (DEBUG_MODE) echo /*: line $lineNo is comment start line\n; continue; } // 块注释内部的行不计入 if ($inMultilineComment) { if (DEBUG_MODE) echo **: line $lineNo is the line inside a comment block\n; continue; } // 单行注释不计入 if (str_starts_with($trimmedLine, //)) { if (DEBUG_MODE) echo //: line $lineNo is single comment line\n; continue; } // 是有效行 $validCodeLines; } fclose($fp); if (DEBUG_MODE) printf(Total %4d, valid %4d - %s\n, $lineNo, $validCodeLines, $filePath); return $validCodeLines; } /** * * 功能: 遍历指定目录及其所有子目录统计指定后缀的文件某种信息我们是代码行数 * * 使用方法: php code_counter.php 目录路径 逗号分隔的后缀列表 * * 示例: php code_counter.php /var/www/project php,html,css */ // 检查命令行参数 if ($argc ! 3) { echo Usage: php $argv[0] directory_path comma_separated_extensions\n; echo Example: php $argv[0] ./my_project php,css,js\n; exit(1); } $directoryPath $argv[1]; $extensionsInput $argv[2]; // 1. 校验目录是否存在且可读 if (!is_dir($directoryPath)) { echo Error: Directory $directoryPath does not exist or is not a directory.\n; exit(1); } // 2. 解析后缀列表 // 将逗号分隔的字符串转换为数组并转换为小写方便匹配 $allowedExtensions array_map(trim, explode(,, $extensionsInput)); $allowedExtensions array_map(strtolower, $allowedExtensions); // 3. 使用递归迭代器遍历目录 try { // RecursiveDirectoryIterator 遍历目录RecursiveIteratorIterator 遍历目录树 $dirIterator new RecursiveDirectoryIterator($directoryPath); $iterator new RecursiveIteratorIterator($dirIterator); $foundFiles 0; foreach ($iterator as $fileInfo) { // 仅处理文件跳过目录 if ($fileInfo-isFile()) { $fileName $fileInfo-getRealPath(); // https://www.php.net/manual/en/splfileinfo.getrealpath.php $fileExtension strtolower($fileInfo-getExtension()); // 扩展名不带点 // 检查文件扩展名是否在允许的列表中 if (in_array($fileExtension, $allowedExtensions)) { $validCodeLines code_counter($fileName); echo $fileName. ,. $validCodeLines. \n; } } } } catch (UnexpectedValueException $e) { echo Error accessing directory: . $e-getMessage() . \n; } ?

相关新闻

sp.net core + ef core 实现动态可扩展的分页方案
2026/7/3 3:00:40

sp.net core + ef core 实现动态可扩展的分页方案

统一请求参数先定义一个公共的 QueryParameters 解决这个问题:public class QueryParameters{private const int MaxPageSize 100;private int _pageSize 10;public int PageNumber { get; set; } 1;// 限制最大值,防止前端传一个很大数值把数据库搞崩…

阅读更多
海外大模型差异化变现全解:5 条蓝海赛道完整落地实操体系
2026/7/3 3:00:40

海外大模型差异化变现全解:5 条蓝海赛道完整落地实操体系

前言国内 AI 赛道早已陷入同质化价格战,通用文案、基础问答、简易绘图类服务供给过剩,从业者只能不断压低报价换取少量订单,投入大量时间算力却难以形成稳定收益。反观海外市场,用户付费意愿、人均预算显著更高,细分跨…

阅读更多
免费解锁LOL所有皮肤:R3nzSkin国服换肤工具终极指南
2026/7/3 3:00:40

免费解锁LOL所有皮肤:R3nzSkin国服换肤工具终极指南

免费解锁LOL所有皮肤:R3nzSkin国服换肤工具终极指南 【免费下载链接】R3nzSkin-For-China-Server Skin changer for League of Legends (LOL) 项目地址: https://gitcode.com/gh_mirrors/r3/R3nzSkin-For-China-Server 还在为英雄联盟皮肤价格昂贵而烦恼吗&a…

阅读更多
桂电大一的数学学习思考:关于矩阵,内积与线性泛函
2026/7/3 4:00:40

桂电大一的数学学习思考:关于矩阵,内积与线性泛函

我自己目前是一名桂电大一新生,就读于密码专业,平时闲暇之余喜欢钻研数学,大一上学期期中时候开始系统性学了一遍线性代数,自己有了一些感悟,所以想要分享一下。首先说说内积吧,这个大多数人都知道&#xf…

阅读更多
IDP技术选型决策指南:OCR、VQA、KIE等7大任务实战评估
2026/7/3 4:00:40

IDP技术选型决策指南:OCR、VQA、KIE等7大任务实战评估

1. 这份IDP排行榜不是“谁家模型更炫”,而是你下个项目该选哪条技术路径的决策地图智能文档处理(IDP)这四个字母,最近半年在我们团队的周会纪要里出现频率,已经超过了“OKR”和“对齐”。不是因为概念新,而…

阅读更多
2026年QMS质量管理系统选型指南:趋势、评分标准、厂商对比及避坑攻略
2026/7/3 4:00:40

2026年QMS质量管理系统选型指南:趋势、评分标准、厂商对比及避坑攻略

前言2026年制造业QMS选型逻辑已发生根本性变革,彻底告别只看功能多少的传统模式。当下核心选型逻辑聚焦四大核心维度:行业合规适配、现有IT系统集成、TCO总成本可控、业务灵活迭代。同时,国产替代加速、低代码/云SaaS普及、IATF16949合规刚需…

阅读更多
uni-app微信小程序代码混淆实战指南
2026/7/3 4:00:40

uni-app微信小程序代码混淆实战指南

1. 为什么需要代码混淆在uni-app开发微信小程序时,代码混淆是一个不可忽视的安全环节。我见过太多开发者因为忽视这一点,导致核心业务逻辑被轻易反编译,甚至出现接口密钥泄露的情况。代码混淆的本质是通过变量名替换、控制流扁平化、字符串加…

阅读更多
gliding_horse(流马)项目深度分析报告(最终版)
2026/7/3 4:00:40

gliding_horse(流马)项目深度分析报告(最终版)

一、项目概览1.1 项目定位gliding_horse(流马)是一个用 Rust 编写的"Agent OS"(智能体操作系统),作者将其定位为"以 CPU 架构为隐喻的智能体编排系统"。项目试图将操作系统的设计理念(…

阅读更多
开源AI创作工作台infinite-canvas:一站式可视化无限画布部署与使用指南
2026/7/3 3:00:40

开源AI创作工作台infinite-canvas:一站式可视化无限画布部署与使用指南

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Claude 随心用,限时 5 折。 👉 点击领海量免费额度 开源AI创作无限画布infinite-canvas,是一个把素材管理、提示词工程、AI生图、画布编排和智能助手整合在一起的一站式工作…

阅读更多
AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告
2026/7/2 4:50:04

AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

6个月前的2025年12月,Boris Cherny 公开宣布自己卸载了 IDE。一时间,Vibe Coding 成了全行业最热的话题。6个月后,当我们回过头来拉一份真实账本,发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…

阅读更多
审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?
2026/7/3 2:39:23

审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

引言:审计结束三个月了,审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间,内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中,审计…

阅读更多
AutoRaise终极指南:3分钟掌握macOS鼠标悬停自动激活窗口技巧
2026/7/3 0:00:39

AutoRaise终极指南:3分钟掌握macOS鼠标悬停自动激活窗口技巧

AutoRaise终极指南:3分钟掌握macOS鼠标悬停自动激活窗口技巧 【免费下载链接】AutoRaise AutoRaise (and focus) a window when hovering over it with the mouse 项目地址: https://gitcode.com/gh_mirrors/au/AutoRaise AutoRaise是一款革命性的macOS窗口管…

阅读更多
AI Agent五大设计模式解析与实战优化
2026/7/3 0:00:39

AI Agent五大设计模式解析与实战优化

1. AI Agent设计模式全景概览在智能系统开发领域,AI Agent的设计模式就像建筑师的蓝图,决定了智能体如何感知环境、处理信息并采取行动。从业五年来,我见证过太多团队因为模式选择不当导致系统重构的案例。最近在金融风控系统升级时&#xff…

阅读更多
iOS自动化测试:基于facebook-wda与weditor的稳定元素定位实战
2026/7/3 0:00:39

iOS自动化测试:基于facebook-wda与weditor的稳定元素定位实战

1. 项目概述:iOS自动化测试的“定位”之痛做iOS自动化测试的朋友,十有八九都卡在“元素定位”这个环节上。你兴冲冲地写好了测试脚本,结果一运行,要么是找不到元素,要么是找到了但点不动,要么是这次能跑通下…

阅读更多
基于Dify与DeepSeek构建私有知识库问答系统实战指南
2026/7/3 2:40:23

基于Dify与DeepSeek构建私有知识库问答系统实战指南

在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…

阅读更多
FAE放射组学分析工具:医学影像特征探索的完整解决方案
2026/7/1 0:00:31

FAE放射组学分析工具:医学影像特征探索的完整解决方案

FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE 你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…

阅读更多
DesktopNaotu:你的终极离线思维导图解决方案,告别网络依赖!
2026/7/1 0:00:31

DesktopNaotu:你的终极离线思维导图解决方案,告别网络依赖!

DesktopNaotu:你的终极离线思维导图解决方案,告别网络依赖! 【免费下载链接】DesktopNaotu 桌面版脑图 (百度脑图离线版,思维导图) 跨平台支持 Windows/Linux/Mac OS. (A cross-platform multilingual Mind Map Tool) 项目地址:…

阅读更多