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 相关文章推荐
FCKeditor的安装(PHP)
Jan 13 PHP
一步一步学习PHP(6) 面向对象
Feb 16 PHP
php获取后台Job管理的实现代码
Jun 10 PHP
浅谈PHP强制类型转换,慎用!
Jun 06 PHP
PHP管理依赖(dependency)关系工具 Composer 安装与使用
Aug 18 PHP
destoon出现验证码不显示时的紧急处理方法
Aug 22 PHP
支付宝接口开发集成支付环境小结
Mar 17 PHP
yii2.0实现验证用户名与邮箱功能
Dec 22 PHP
PHP list() 将数组中的值赋给变量的简单实例
Jun 13 PHP
基于thinkPHP框架实现留言板的方法
Oct 17 PHP
php源码之将图片转化为data/base64数据流实例详解
Nov 27 PHP
laravel7学习之无限级分类的最新实现方法
Sep 30 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
php echo 输出字符串函数详解
2010/05/13 PHP
Drupal读取Excel并导入数据库实例
2014/03/02 PHP
PHP连接MSSQL时nvarchar字段长度被截断为255的解决方法
2014/12/25 PHP
Laravel5.1数据库连接、创建数据库、创建model及创建控制器的方法
2016/03/29 PHP
yii2带搜索功能的下拉框实例详解
2016/05/12 PHP
php魔法函数与魔法常量使用介绍
2017/07/23 PHP
判断js中各种数据的类型方法之typeof与0bject.prototype.toString讲解
2013/11/07 Javascript
JS将所有对象s的属性复制给对象r(原生js+jquery)
2014/01/25 Javascript
JS实现简易图片轮播效果的方法
2015/03/25 Javascript
JS获取IMG图片高宽的简单实例
2016/05/17 Javascript
jquery pagination插件动态分页实例(Bootstrap分页)
2016/12/23 Javascript
利用node.js爬取指定排名网站的JS引用库详解
2017/07/25 Javascript
React Native实现地址挑选器功能
2017/10/24 Javascript
解决webpack dev-server不能匹配post请求的问题
2018/08/24 Javascript
详解JS判断页面是在手机端还是在PC端打开的方法
2019/04/26 Javascript
js实现旋转木马轮播图效果
2020/01/10 Javascript
小程序实现多个选项卡切换
2020/06/19 Javascript
python 连接sqlite及简单操作
2017/06/30 Python
python 画三维图像 曲面图和散点图的示例
2018/12/29 Python
一篇文章了解Python中常见的序列化操作
2019/06/20 Python
PyQt 图解Qt Designer工具的使用方法
2019/08/06 Python
Python变量及数据类型用法原理汇总
2020/08/06 Python
法国在线购买汽车轮胎网站:123pneus.fr
2019/02/25 全球购物
意大利包包和行李箱销售网站:Bagaglio.it
2021/03/02 全球购物
抽象类和接口的区别
2012/09/19 面试题
深圳茁壮笔试题
2015/05/28 面试题
2014年圣诞节促销方案
2014/03/14 职场文书
升学宴主持词
2014/04/02 职场文书
英语一分钟演讲稿
2014/04/29 职场文书
教师专业自荐信
2014/05/31 职场文书
幼儿园小班家长评语
2014/12/30 职场文书
幼儿园感谢信
2015/01/21 职场文书
自我推荐信格式模板
2015/03/24 职场文书
预备党员转正党小组意见
2015/06/01 职场文书
SQL Server #{}可以防止SQL注入
2022/05/11 SQL Server
Python pyecharts案例超市4年数据可视化分析
2022/08/14 Python