当前位置:首页 > PHP教程 > php应用 > 列表

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

发布:smiling 来源: PHP粉丝网  添加日期:2021-12-19 12:45:21 浏览: 评论:0 

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

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

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

  1. <?php 
  2.    
  3. class TotalCode { 
  4.    
  5.  /** 
  6.  * 统计当前文件有多少行代码, 
  7.  * @return TotalCodeInfo 
  8.  */ 
  9.  public function totalByFile($fullFileName) { 
  10.  $fileContent = file_get_contents($fullFileName); 
  11.  $lines = explode("\n"$fileContent); 
  12.  $lineCount = count($lines); 
  13.    
  14.  for($i = $lineCount -1; $i > 0; $i -= 1) { 
  15.   $line = $lines[$i]; 
  16.   if ($line != ""break
  17.   $lineCount -= 1; //最后几行是空行的要去掉。 
  18.  } 
  19.  unset($fileContent); 
  20.  unset($lines); 
  21.    
  22.  $totalCodeInfo = new TotalCodeInfo(); 
  23.  $totalCodeInfo->setFileCount(1); 
  24.  $totalCodeInfo->setLineCount($lineCount); 
  25.  return $totalCodeInfo
  26.  } 
  27.    
  28.  /** 
  29.  * 统计当前目录下(含子目录) 
  30.  * 有多少文件,以及多少行代码 
  31.  *  
  32.  * totalInfo = array( "fileCount"=>?, "lineCount"=>? ); 
  33.  *  
  34.  * @return TotalCodeInfo  
  35.  */ 
  36.  public function totalByDir($dirName) { 
  37.  $fileList = scandir($dirName); 
  38.  $totalCodeDir = new TotalCodeInfo(); 
  39.  foreach ($fileList as $fileName) { 
  40.   if ($fileName == "." || $fileName == ".."continue
  41.   $fullFileName = $dirName . "/" . $fileName
  42.   if (is_file($fullFileName)) { 
  43.   $totalCodeSub = $this->totalByFile($dirName . "/" . $fileName); 
  44.   } else if (is_dir($fullFileName)) { 
  45.   $totalCodeSub = $this->totalByDir($dirName . "/" . $fileName);  
  46.   } else { 
  47.   $totalCodeSub = new TotalCodeInfo(); 
  48.   } 
  49.     
  50.   $totalCodeDir->increaseByOther($totalCodeSub); 
  51.  } 
  52.  return $totalCodeDir
  53.  } 
  54.    
  55.  public function totalByDirOrFile($dirOrFileName) { 
  56.  if (is_dir($dirOrFileName)) { 
  57.   return $this->totalByDir($dirOrFileName); 
  58.  } else if (is_file($dirOrFileName)) { 
  59.   return $this->totalByFile($dirOrFileName); 
  60.  } else { 
  61.   return new TotalCodeInfo(); 
  62.  } 
  63.  } 
  64.    
  65.  public function test() { 
  66.  $re = $this->totalByDir("/export/www/pm_web/configs"); 
  67.  var_dump($re); 
  68.  } 
  69.    
  70.  public function main($dirList) { 
  71.  $totalCodeAll = new TotalCodeInfo(); 
  72.  foreach($dirList as $dirName) { 
  73.   $totalCodeSub = $this->totalByDirOrFile($dirName); 
  74.   $totalCodeAll->increaseByOther($totalCodeSub); 
  75.  } 
  76.  print_r($totalCodeAll); 
  77.  } 
  78.    
  79.    
  80. class TotalCodeInfo { 
  81.  private $fileCount = 0; 
  82.  private $lineCount = 0; 
  83.    
  84.  public function getFileCount() { return $this->fileCount; } 
  85.  public function getLineCount() { return $this->lineCount; } 
  86.  public function setFileCount($fileCount) { 
  87.  $this->fileCount = $fileCount
  88.  return $this
  89.  } 
  90.  public function setLineCount($lineCount) { 
  91.  $this->lineCount = $lineCount
  92.  return $this
  93.  } 
  94.    
  95.  /** 
  96.  * 累加  
  97.  */ 
  98.  public function increaseByOther($totalCodeInfo) { 
  99.  $this->setFileCount( $this->fileCount + $totalCodeInfo->getFileCount()); 
  100.  $this->setLineCount( $this->lineCount + $totalCodeInfo->getLineCount()); 
  101.  return $this
  102.  } 
  103.    
  104. $dirList = array(); 
  105. $dirList[] = "/your/path"
  106.    
  107. $obj = new TotalCode(); 
  108. $obj->main($dirList);

Tags: PHP统计代码行数

分享到: