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 mysql Errcode: 28 终极解决方法
Jul 01 PHP
windows下开发并编译PHP扩展的方法
Mar 18 PHP
php 如何获取数组第一个值
Aug 06 PHP
php文件上传的例子及参数详解
Dec 12 PHP
php获得用户ip地址的比较不错的方法
Feb 08 PHP
从零开始学YII2框架(六)高级应用程序模板
Aug 20 PHP
PHP队列用法实例
Nov 05 PHP
PHP的cURL库简介及使用示例
Feb 06 PHP
PHP设计模式之装饰者模式代码实例
May 11 PHP
在Linux系统的服务器上隐藏PHP版本号的方法
Jun 06 PHP
php多线程实现方法及用法实例详解
Oct 26 PHP
php实现的生成迷宫与迷宫寻址算法完整实例
Nov 06 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
ThinkPHP基于PHPExcel导入Excel文件的方法
2014/10/15 PHP
php性能分析之php-fpm慢执行日志slow log用法浅析
2016/10/17 PHP
基于jquery实现的鼠标滑过按钮改变背景图片
2011/07/15 Javascript
jQuery lazyLoad图片延迟加载插件的优化改造方法分享
2013/08/13 Javascript
快速查找数组中的某个元素并返回下标示例
2013/09/03 Javascript
js判断两个日期是否相等的方法
2013/09/10 Javascript
jquery中获取id值方法小结
2013/09/22 Javascript
可恶的ie8提示缺少id未定义
2014/03/20 Javascript
js简单的表格添加行和删除行操作示例
2014/03/31 Javascript
js与jquery实时监听输入框值的oninput与onpropertychange方法
2015/02/05 Javascript
基于jQuery和CSS3制作数字时钟附源码下载(jquery篇)
2015/11/24 Javascript
Bootstrap每天必学之警告框插件
2016/04/26 Javascript
jquery实现无刷新验证码的简单实例
2016/05/19 Javascript
原生js仿jquery实现对Ajax的封装
2016/10/04 Javascript
微信小程使用swiper组件实现图片轮播切换显示功能【附源码下载】
2017/12/12 Javascript
JavaScript使用类似break机制中断forEach循环的方法
2018/11/13 Javascript
JavaScript实现数字前补“0”的五种方法示例
2019/01/03 Javascript
微信小程序实现一个简单swiper代码实例
2019/12/30 Javascript
有趣的JavaScript隐式类型转换操作实例分析
2020/05/02 Javascript
在Python的Django框架中创建语言文件
2015/07/27 Python
详解Pytorch 使用Pytorch拟合多项式(多项式回归)
2018/05/24 Python
django ajax发送post请求的两种方法
2020/01/05 Python
git查看、创建、删除、本地、远程分支方法详解
2020/02/18 Python
一套软件测试笔试题
2014/07/25 面试题
自我评价优秀范文分享
2013/11/30 职场文书
长辈证婚人证婚词
2014/01/09 职场文书
初中政治教学反思
2014/01/17 职场文书
求职自荐信的格式
2014/04/07 职场文书
计算机专业自荐信范文
2014/05/28 职场文书
合作意向书
2014/07/30 职场文书
研究生导师评语
2014/12/31 职场文书
中班下学期个人工作总结
2015/02/12 职场文书
师范生小学见习总结
2015/06/23 职场文书
年终工作总结范文
2019/06/20 职场文书
Python 语言实现六大查找算法
2021/06/30 Python
古见同学有交流障碍症 第二季宣传CM公开播出
2022/04/11 日漫