亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

PHP統計目錄下的文件總數及代碼行數

2024-09-04 11:44:04
字體:
來源:轉載
供稿:網友
  1. <?php 
  2. /** 
  3.  * @author xiaoxiao <x_824@sina.com> 2011-1-12 
  4.  * @link http://xiaoyaoxia.cnblogs.com/ 
  5.  * @license 
  6.  * 統計目錄下的文件行數及總文件數··去除注釋 
  7.  */ 
  8.  
  9. $obj = new caculatefiles(); 
  10. //如果設置為false,這不會顯示每個文件的信息,否則顯示 
  11. $obj->setshowflag(false); 
  12. //會跳過所有all開頭的文件 
  13. $obj->setfileskip(array('all'));  
  14. $obj->run("d:phpappphp_tests"); 
  15.  
  16. //所有文件,(默認格式為.php) 
  17. $obj->setfileskip(array()); 
  18. $obj->run("d:phpappphp"); 
  19.  
  20. $obj->setshowflag(true); 
  21. //跳過所有i和a開頭的文件,(比如接口和抽象類開頭) 
  22. $obj->setfileskip(array('i''a')); 
  23. $obj->run("d:phpappphp"); 
  24.  
  25.  
  26. /** 
  27.  * 執行目錄中文件的統計(包括文件數及總行數 
  28.  *  
  29.  * 1、跳過文件的時候: 
  30.  *    匹配的規則只是從文件名上著手,匹配的規則也僅限在開頭。 
  31.  * 2、跳過文件中的注釋行: 
  32.  *    匹配的規則只是從注釋段落的頭部匹配,如果出現// 及 *及 #及/*開頭的行及空行會被跳過。所以類似/*這種多汗注釋,每行的開頭都必須加上*號,否則無法匹配到這種的注釋。 
  33.  * 3、目錄過濾: 
  34.  *    匹配的規則是從目錄名的全名匹配 
  35.  */ 
  36. class caculatefiles { 
  37.  /** 
  38.   * 統計的后綴 
  39.   */ 
  40.  private $ext = ".php"
  41.  /** 
  42.   * 是否顯示每個文件的統計數,開源代碼Vevb.com 
  43.   */ 
  44.  private $showeveryfile = true; 
  45.  /** 
  46.   * 文件的的跳過規則 
  47.   */ 
  48.  private $fileskip = array(); 
  49.  /** 
  50.   * 統計的跳過行規則 
  51.   */ 
  52.  private $lineskip = array("*""/*""//""#"); 
  53.  /** 
  54.   * 統計跳過的目錄規則 
  55.   */ 
  56.  private $dirskip = array("."".."'.svn'); 
  57.    
  58.  public function __construct($ext = ''$dir = ''$showeveryfile = true, $dirskip = array(), $lineskip = array(), $fileskip = array()) { 
  59.   $this->setext($ext); 
  60.   $this->setdirskip($dirskip); 
  61.   $this->setfileskip($fileskip); 
  62.   $this->setlineskip($lineskip); 
  63.   $this->setshowflag($showeveryfile); 
  64.   $this->run($dir); 
  65.  } 
  66.    
  67.  public function setext($ext) { 
  68.   trim($ext) && $this->ext = strtolower(trim($ext)); 
  69.  } 
  70.  public function setshowflag($flag = true) { 
  71.   $this->showeveryfile = $flag
  72.  } 
  73.  public function setdirskip($dirskip) { 
  74.   $dirskip && is_array($dirskip) && $this->dirskip = $dirskip
  75.  } 
  76.  public function setfileskip($fileskip) { 
  77.   $this->fileskip = $fileskip
  78.  } 
  79.  public function setlineskip($lineskip) { 
  80.   $lineskip && is_array($lineskip) && $this->lineskip = array_merge($this->lineskip, $lineskip); 
  81.  } 
  82.  /** 
  83.   * 執行統計 
  84.   * @param string $dir 統計的目錄 
  85.   */ 
  86.  public function run($dir = '') { 
  87.   if ($dir == ''return
  88.   if (!is_dir($dir)) exit('path error!'); 
  89.   $this->dump($dir$this->readdir($dir)); 
  90.  } 
  91.      
  92.  /** 
  93.   * 顯示統計結果 
  94.   * @param string $dir 目錄 
  95.   * @param array $result 統計結果(包含總行數,有效函數,總文件數 
  96.   */ 
  97.  private function dump($dir$result) { 
  98.   $totalline = $result['totalline']; 
  99.   $linenum = $result['linenum']; 
  100.   $filenum = $result['filenum']; 
  101.   echo "*************************************************************rn<br/>"
  102.   echo $dir . ":rn<br/>"
  103.   echo "totalline: " . $totalline . "rn<br/>"
  104.   echo "totalline with no comment and empty: " . $linenum . "rn<br/>"
  105.   echo 'totalfiles:' . $filenum . "rn<br/>"
  106.  } 
  107.  
  108.  /** 
  109.   * 讀取目錄 
  110.   * @param string $dir 目錄 
  111.   */ 
  112.  private function readdir($dir) { 
  113.   $num = array('totalline' => 0, 'linenum' => 0, 'filenum' => 0); 
  114.   if ($dh = opendir($dir)) { 
  115.    while (($file = readdir($dh)) !== false) { 
  116.     if ($this->skipdir($file)) continue
  117.     if (is_dir($dir . '/' . $file)) { 
  118.      $result = $this->readdir($dir . '/' . $file); 
  119.      $num['totalline'] += $result['totalline']; 
  120.      $num['linenum'] += $result['linenum']; 
  121.      $num['filenum'] += $result['filenum']; 
  122.     } else { 
  123.      if ($this->skipfile($file)) continue
  124.      list($num1$num2) = $this->readfiles($dir . '/' . $file); 
  125.      $num['totalline'] += $num1
  126.      $num['linenum'] += $num2
  127.      $num['filenum']++; 
  128.     } 
  129.    } 
  130.    closedir($dh); 
  131.   } else { 
  132.    echo 'open dir <' . $dir . '> error!' . "r"
  133.   } 
  134.   return $num
  135.  } 
  136.  
  137.  /** 
  138.   * 讀取文件 
  139.   * @param string $file 文件 
  140.   */ 
  141.  private function readfiles($file) { 
  142.   $str = file($file); 
  143.   $linenum = 0; 
  144.   foreach ($str as $value) { 
  145.    if ($this->skipline(trim($value))) continue
  146.    $linenum++; 
  147.   } 
  148.   $totalnum = count(file($file)); 
  149.   if (!$this->showeveryfile) return array($totalnum$linenum); 
  150.   echo $file . "rn"
  151.   echo 'totalline in the file:' . $totalnum . "rn"
  152.   echo 'totalline with no comment and empty in the file:' . $linenum . "rn"
  153.   return array($totalnum$linenum); 
  154.  } 
  155.     
  156.     /** 
  157.   * 執行跳過的目錄規則 
  158.   * @param string $dir 目錄名 
  159.   */ 
  160.  private function skipdir($dir) { 
  161.   if (in_array($dir$this->dirskip)) return true; 
  162.   return false; 
  163.  } 
  164.      
  165.  /** 
  166.   * 執行跳過的文件規則 
  167.   * @param string $file 文件名 
  168.   */ 
  169.  private function skipfile($file) { 
  170.   if (strtolower(strrchr($file'.')) != $this->ext) return true; 
  171.   if (!$this->fileskip) return false; 
  172.   foreach ($this->fileskip as $skip) { 
  173.    if (strpos($file$skip) === 0) return true; 
  174.   } 
  175.   return false; 
  176.  } 
  177.      
  178.  /** 
  179.   * 執行文件中行的跳過規則 
  180.   * @param string $string 行內容 
  181.   */ 
  182.  private function skipline($string) { 
  183.   if ($string == ''return true; 
  184.   foreach ($this->lineskip as $tag) { 
  185.    if (strpos($string$tag) === 0) return true; 
  186.   } 
  187.   return false; 
  188.  } 
  189. ?> 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久999免费视频| 亚洲国产成人在线播放| 国产国语刺激对白av不卡| 日韩av片免费在线观看| 欧美激情精品久久久久久| 国产日韩av在线| 国产精品精品视频一区二区三区| 亚洲免费精彩视频| 宅男66日本亚洲欧美视频| 久久在线精品视频| 精品久久久久久久久久ntr影视| 国产精品久久久久久久久久三级| 亚洲18私人小影院| 亚洲欧美中文字幕在线一区| 欧美激情精品久久久| 亚洲综合中文字幕在线| 成人有码在线视频| 国产精品自拍网| 日韩电视剧在线观看免费网站| 69久久夜色精品国产69乱青草| 亚洲视频在线观看免费| 91在线免费看网站| 尤物yw午夜国产精品视频| 精品国内产的精品视频在线观看| 亚洲精品久久久久久久久久久久久| 国产精品久久久久久av| 日日摸夜夜添一区| 91av在线免费观看视频| 国产+成+人+亚洲欧洲| 91香蕉嫩草神马影院在线观看| 91视频免费网站| 日韩成人在线播放| 97香蕉久久超级碰碰高清版| 日韩a**中文字幕| 欧美日韩国产一区在线| 日韩中文字幕视频在线| 午夜欧美大片免费观看| 亚洲免费成人av电影| 日韩中文在线观看| www.久久色.com| 色噜噜狠狠狠综合曰曰曰88av| 一区国产精品视频| 欧美中文字幕精品| 在线观看国产精品日韩av| 成人免费高清完整版在线观看| 欧美国产欧美亚洲国产日韩mv天天看完整| 中文字幕在线国产精品| 日韩亚洲在线观看| 日韩精品在线观看网站| 黑人与娇小精品av专区| 日韩av免费网站| 欧美一级电影在线| 欧美一乱一性一交一视频| 日韩在线视频观看| 国产精品jizz在线观看麻豆| 国产丝袜视频一区| 韩国三级电影久久久久久| 国产精品久久久久久久久男| 在线亚洲国产精品网| 久久成年人视频| 亚洲天堂2020| 亚洲成人黄色在线观看| 97国产精品视频人人做人人爱| 美日韩精品视频免费看| 色偷偷偷亚洲综合网另类| 91av视频在线免费观看| 亚洲色图激情小说| 国产中文字幕日韩| 91亚洲国产成人久久精品网站| www.xxxx欧美| 久久久久久久爱| 久久视频这里只有精品| 中文字幕自拍vr一区二区三区| 久久99久久99精品中文字幕| 91精品国产91久久久久久不卡| 欧美日韩国产一中文字不卡| 国产成人精品久久二区二区| 欧美亚洲另类视频| 久久久亚洲欧洲日产国码aⅴ| 国模gogo一区二区大胆私拍| 奇米四色中文综合久久| 国自产精品手机在线观看视频| 中文字幕欧美日韩精品| 韩国三级电影久久久久久| 久久香蕉国产线看观看av| 欧美最猛黑人xxxx黑人猛叫黄| 亚洲欧洲在线视频| 亚洲精品国产美女| 上原亚衣av一区二区三区| 亚洲男人天天操| 欧美日韩中文字幕在线| 亚洲精品综合精品自拍| 亚洲精品久久久久国产| 中文字幕九色91在线| 欧美成人精品在线观看| 孩xxxx性bbbb欧美| 97在线精品视频| 日韩一区二区三区xxxx| 77777少妇光屁股久久一区| 中文字幕无线精品亚洲乱码一区| 久久久精品国产亚洲| 国产视频久久久久| 久久91超碰青草是什么| 日本一欧美一欧美一亚洲视频| 日本午夜在线亚洲.国产| 在线性视频日韩欧美| 欧美一级淫片videoshd| 91tv亚洲精品香蕉国产一区7ujn| 亚洲资源在线看| 欧美最顶级的aⅴ艳星| 久久夜色精品国产| 亚洲第五色综合网| 久久99精品久久久久久噜噜| 亚洲美女av在线播放| 亚洲在线一区二区| 国产欧洲精品视频| 韩国日本不卡在线| 亚洲欧美精品伊人久久| 色七七影院综合| 日韩中文字幕在线看| 久久久久久久影院| 日韩电影第一页| 亚洲精品欧美一区二区三区| 国产精品激情av电影在线观看| 91亚洲人电影| 日韩欧美中文第一页| 亚洲精品免费一区二区三区| 日韩中文字幕网站| 精品久久香蕉国产线看观看gif| 国产精品美女久久| 亚洲午夜精品久久久久久久久久久久| 亚洲欧美中文日韩v在线观看| 91精品视频在线| 97超级碰在线看视频免费在线看| 日韩美女视频免费看| 成人av资源在线播放| 午夜精品三级视频福利| 亚洲综合日韩中文字幕v在线| 国产精品大陆在线观看| 色偷偷av亚洲男人的天堂| 亚洲成人黄色在线| 久久久久久久国产精品| 国产这里只有精品| 国产免费一区二区三区在线观看| 欧美激情亚洲一区| 久久国产视频网站| 亚洲精品91美女久久久久久久| 亚洲天堂免费观看| 亚洲国产日韩精品在线| 一本色道久久综合亚洲精品小说| 亚洲图片制服诱惑| 国产视频在线一区二区| 国产v综合ⅴ日韩v欧美大片| 国产精品久久久av| 成人福利网站在线观看| 国产热re99久久6国产精品| 日韩av理论片| 97视频免费在线观看| 日韩中文在线中文网在线观看| 日韩欧美a级成人黄色| 国产视频在线一区二区| 亚洲a在线播放| 日韩精品在线影院| 国产精品6699|