PHP实现统计代码行数小工具


Posted in PHP onSeptember 19, 2019

本文实例为大家分享了PHP实现统计代码行数小工具,供大家参考,具体内容如下

为了方面统计编程代码行数,做了一个小工具。

自动统计指定目录以及目录下的所有文件。

<?php
 
class TotalCode {
 
 /**
 * 统计当前文件有多少行代码,
 * @return TotalCodeInfo
 */
 public function totalByFile($fullFileName) {
 $fileContent = file_get_contents($fullFileName);
 $lines = explode("\n", $fileContent);
 $lineCount = count($lines);
 
 for($i = $lineCount -1; $i > 0; $i -= 1) {
  $line = $lines[$i];
  if ($line != "") break;
  $lineCount -= 1; //最后几行是空行的要去掉。
 }
 unset($fileContent);
 unset($lines);
 
 $totalCodeInfo = new TotalCodeInfo();
 $totalCodeInfo->setFileCount(1);
 $totalCodeInfo->setLineCount($lineCount);
 return $totalCodeInfo;
 }
 
 /**
 * 统计当前目录下(含子目录)
 * 有多少文件,以及多少行代码
 * 
 * totalInfo = array( "fileCount"=>?, "lineCount"=>? );
 * 
 * @return TotalCodeInfo 
 */
 public function totalByDir($dirName) {
 $fileList = scandir($dirName);
 $totalCodeDir = new TotalCodeInfo();
 foreach ($fileList as $fileName) {
  if ($fileName == "." || $fileName == "..") continue;
  $fullFileName = $dirName . "/" . $fileName;
  if (is_file($fullFileName)) {
  $totalCodeSub = $this->totalByFile($dirName . "/" . $fileName);
  } else if (is_dir($fullFileName)) {
  $totalCodeSub = $this->totalByDir($dirName . "/" . $fileName); 
  } else {
  $totalCodeSub = new TotalCodeInfo();
  }
  
  $totalCodeDir->increaseByOther($totalCodeSub);
 }
 return $totalCodeDir;
 }
 
 public function totalByDirOrFile($dirOrFileName) {
 if (is_dir($dirOrFileName)) {
  return $this->totalByDir($dirOrFileName);
 } else if (is_file($dirOrFileName)) {
  return $this->totalByFile($dirOrFileName);
 } else {
  return new TotalCodeInfo();
 }
 }
 
 public function test() {
 $re = $this->totalByDir("/export/www/pm_web/configs");
 var_dump($re);
 }
 
 public function main($dirList) {
 $totalCodeAll = new TotalCodeInfo();
 foreach($dirList as $dirName) {
  $totalCodeSub = $this->totalByDirOrFile($dirName);
  $totalCodeAll->increaseByOther($totalCodeSub);
 }
 print_r($totalCodeAll);
 }
 
}
 
class TotalCodeInfo {
 private $fileCount = 0;
 private $lineCount = 0;
 
 public function getFileCount() { return $this->fileCount; }
 public function getLineCount() { return $this->lineCount; }
 public function setFileCount($fileCount) {
 $this->fileCount = $fileCount;
 return $this;
 }
 public function setLineCount($lineCount) {
 $this->lineCount = $lineCount;
 return $this;
 }
 
 /**
 * 累加 
 */
 public function increaseByOther($totalCodeInfo) {
 $this->setFileCount( $this->fileCount + $totalCodeInfo->getFileCount());
 $this->setLineCount( $this->lineCount + $totalCodeInfo->getLineCount());
 return $this;
 }
}
 
$dirList = array();
$dirList[] = "/your/path";
 
$obj = new TotalCode();
$obj->main($dirList);

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
php学习 函数 课件
Jun 15 PHP
PHP 设计模式之观察者模式介绍
Feb 22 PHP
PHP常用开发函数解析之数组篇[未完结]
Jul 30 PHP
PHP实现获取图片颜色值的方法
Jul 11 PHP
Laravel4中的Validator验证扩展用法详解
Jul 26 PHP
PHP内置加密函数详解
Nov 20 PHP
PHP基于自定义类随机生成姓名的方法示例
Aug 05 PHP
总结PHP中初始化空数组的最佳方法
Feb 13 PHP
Yii框架数据库查询、增加、删除操作示例
Oct 14 PHP
PHP中关于php.ini参数优化详解
Feb 28 PHP
php模拟实现斗地主发牌
Apr 22 PHP
PHP中echo与print区别点整理
Mar 09 PHP
php设计模式之观察者模式定义与用法经典示例
Sep 19 #PHP
php设计模式之职责链模式定义与用法经典示例
Sep 19 #PHP
php使用yield对性能提升的测试实例分析
Sep 19 #PHP
PHP+redis实现的限制抢购防止商品超发功能详解
Sep 19 #PHP
php+redis实现消息队列功能示例
Sep 19 #PHP
php文件包含的几种方式总结
Sep 19 #PHP
smarty模板的使用方法实例分析
Sep 18 #PHP
You might like
阿拉伯的咖啡与水烟
2021/03/03 咖啡文化
php设计模式 Singleton(单例模式)
2011/06/26 PHP
php中批量替换文件名的实现代码
2011/07/20 PHP
PHP正则表达式替换站点关键字链接后空白的解决方法
2014/09/16 PHP
PHP通过插入mysql数据来实现多机互锁实例
2014/11/05 PHP
php+jquery+html实现点击不刷新加载更多的实例代码
2016/08/12 PHP
php微信公众号开发之图片回复
2018/10/20 PHP
验证用户是否修改过页面的数据的实现方法
2008/09/26 Javascript
基于jquery的修改当前TAB显示标题的代码
2010/12/11 Javascript
jquery load()在firefox(火狐)下显示不正常的解决方法
2011/04/05 Javascript
JavaScript常用脚本汇总(二)
2015/03/04 Javascript
JQuery给网页更换皮肤的方法
2015/05/30 Javascript
js实现图片轮播效果
2015/12/19 Javascript
Vue系列:通过vue-router如何传递参数示例
2017/01/16 Javascript
微信小程序中顶部导航栏的实现代码
2017/03/30 Javascript
详解ElementUI之表单验证、数据绑定、路由跳转
2017/06/21 Javascript
vue-cli 组件的导入与使用教程详解
2018/04/11 Javascript
Vue项目中最新用到的一些实用小技巧
2018/11/06 Javascript
在JavaScript中如何访问暂未存在的嵌套对象
2019/06/18 Javascript
[01:04:48]VGJ.S vs TNC Supermajor 败者组 BO3 第一场 6.6
2018/06/07 DOTA
Python数据类型详解(二)列表
2016/05/08 Python
python 类详解及简单实例
2017/03/24 Python
python图形开发GUI库pyqt5的详细使用方法及各控件的属性与方法
2020/02/14 Python
Python3基于plotly模块保存图片表格
2020/08/03 Python
python中判断数字是否为质数的实例讲解
2020/12/06 Python
马来西亚户外装备商店:PTT Outdoor
2019/07/13 全球购物
Moss Bros官网:英国排名第一的西装店
2020/02/26 全球购物
医学院学生的自我评价分享
2013/11/19 职场文书
光盘行动倡议书
2014/02/02 职场文书
2014年四风个人对照检查及整改措施
2014/10/28 职场文书
生死抉择观后感
2015/06/09 职场文书
2019毕业论文致谢词
2019/06/24 职场文书
JavaScript嵌入百度地图API的最详细方法
2021/04/16 Javascript
Python - 10行代码集2000张美女图
2021/05/23 Python
只用40行Python代码就能写出pdf转word小工具
2021/05/31 Python
 Python 中 logging 模块使用详情
2022/03/03 Python