程序代码行数统计脚本
📅 2026/7/3 3:01:01
👁️ 次浏览
大多数逻辑是本地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; } ?
统一请求参数先定义一个公共的 QueryParameters 解决这个问题:public class QueryParameters{private const int MaxPageSize 100;private int _pageSize 10;public int PageNumber { get; set; } 1;// 限制最大值,防止前端传一个很大数值把数据库搞崩…
📅 2026/7/3 3:01:01
前言国内 AI 赛道早已陷入同质化价格战,通用文案、基础问答、简易绘图类服务供给过剩,从业者只能不断压低报价换取少量订单,投入大量时间算力却难以形成稳定收益。反观海外市场,用户付费意愿、人均预算显著更高,细分跨…
📅 2026/7/3 3:01:01
免费解锁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 3:01:01
前几天跟一个客户的供应链负责人聊,他问了我一个问题:
“你们搞的AI,能不能告诉我,一个订单延迟了三天,接下来要怎么处理?”
我知道,他说的不是技术问题,而是一个具体的判断——而…
📅 2026/7/3 6:33:32
目录
一、Artix-7 硬件基础:CMT 时钟资源
路线一:使用 Xilinx 硬核 MMCM/PLL(Clocking Wizard IP)
1 工程创建与 IP 配置全步骤
1.1 新建 Vivado 工程
1.2 基础 Clocking Options 配置
1.3 Output Clocks 多路时钟配置
1.4…
📅 2026/7/3 6:33:32
企业实施AI Agent项目时,最易犯的错并非模型不够强,而是未清晰定义AI的权限边界。文章强调AI Agent要进入业务系统,首要任务是明确其“能看什么、能做什么、谁来确认、出了问题怎么追”。文章建议企业在评估AI Agent项目时,应先关…
📅 2026/7/3 6:33:32
PIC18F45K80:Microchip ECAN增强型闪存单片机深度解析在汽车车身控制、工业通信节点以及各类对低功耗和CAN通信有综合要求的嵌入式系统中,微控制器的选型往往需要在处理能力、外设集成和功耗控制之间寻求最佳平衡。Microchip推出的PIC18F45K80系列作为PI…
📅 2026/7/3 6:33:32
在餐饮行业竞争日益激烈的今天,扫码点餐小程序点餐系统成为了众多商家提升服务效率、优化顾客体验的重要工具。然而,面对市场上琳琅满目的点餐系统,哪个才是既好用又性价比高的呢?今天就带大家一探究竟。真实用户痛点分析点餐等待…
📅 2026/7/3 6:33:32
【OpenHarmony/HarmonyOs 】政治学习 App 的悬浮导航栏、沉浸光感与全新交互体验实践
在做 HarmonyOS NEXT / ArkTS 项目时,我越来越明显地感受到:一个学习工具不能只停留在“能用”,还要让用户愿意反复打开。尤其是初高中政治学习这种内容密…
📅 2026/7/3 6:31:32
1. AI Agent设计模式全景概览在智能系统开发领域,AI Agent的设计模式就像建筑师的蓝图,决定了智能体如何感知环境、处理信息并采取行动。从业五年来,我见证过太多团队因为模式选择不当导致系统重构的案例。最近在金融风控系统升级时ÿ…
📅 2026/7/3 0:00:32
1. 项目概述:iOS自动化测试的“定位”之痛做iOS自动化测试的朋友,十有八九都卡在“元素定位”这个环节上。你兴冲冲地写好了测试脚本,结果一运行,要么是找不到元素,要么是找到了但点不动,要么是这次能跑通下…
📅 2026/7/3 0:00:32
MTKClient实战指南:深度解析联发科芯片调试与设备修复方案 【免费下载链接】mtkclient MTK reverse engineering and flash tool 项目地址: https://gitcode.com/gh_mirrors/mt/mtkclient
MTKClient是一款专业的联发科芯片调试工具,为技术爱好者和…
📅 2026/7/3 0:00:32
6个月前的2025年12月,Boris Cherny 公开宣布自己卸载了 IDE。一时间,Vibe Coding 成了全行业最热的话题。6个月后,当我们回过头来拉一份真实账本,发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…
📅 2026/7/2 17:37:53
引言:审计结束三个月了,审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间,内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中,审计…
📅 2026/7/2 17:37:51
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/3 4:46:22
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/2 9:49:12
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/2 1:36:45