統計程式碼行數的python小工具
一個用python實現的統計程式碼行數的小工具
先立個flag, 新年新目標,希望2018年程式碼行數可以寫到五萬行。
實現功能
- 計算出某一目錄以及子目錄下程式碼檔案的行數
- 在計算程式碼的過程中,只對標準命名的檔案進行統計,如[檔名.檔案型別]
- 排除了以“#”開頭的包含檔案,巨集定義等,如#include, #define, #pragma等
- 排除了c,cpp檔案中的“//”, “/…/”等的註釋
- 排除了python檔案中import, from 等開頭的匯入
使用方法
新建countLines.py檔案,複製程式碼到檔案中,將其放在想計算行數的程式碼目錄下,直接使用Python執行即可算出該目錄以及所有子目錄下程式碼檔案的行數。
- 將該python檔案命名為countLines.py,放到想計算程式碼行數的檔案目錄下
- 其中helloworld.c檔案內容如下:
- 用python.exe直接開啟該檔案或者使用python countLines.py,執行檔案即可。
我們可以看到,統計程式碼行的時候我們排除了兩個空行以及開頭的包含檔案行,因此有效程式碼行為5行
程式碼實現
#!/usr/bin/env python
# -- coding: utf-8 --
# @Time : 2018/3/5 13:55
# @Author : likewind
# @mail : [email protected]
# @File : countLines.py
# @Software: sky-studio.cn
import os
'''
返回每個檔案行數,其中行數不包括以“#”開頭的包含檔案,巨集定義等,
排除了c,cpp檔案中的“//”, “/*...*/”等的註釋,
排除了python檔案中import, from 等開頭的匯入
'''
def get_lines(file_name):
f = open(file_name)
#flag用於處理c,cpp中“/*...*/”多行註釋
flag = False
count = 0
while True:
#讀取檔案並去除開頭的空格,製表符
line = f.readline()
line = line.lstrip(' \t')
if not line:
break
#如果該行有“#”, “import”等打頭的字元,忽略該行
if flag == False:
if line[0:1] == "#" or line[0:6] == "import" or line[0:4] == "from" or line == "\n" or line[0:2] == "//":
continue
#如果該行存在“/*”並且不存在“*/”,表明多行註釋未在一行結束,flag=True
if line.find("/*") != -1 :
if line.find("*/") != -1:
continue
else:
flag = True
continue
#如果flag=True,表明處於多行註釋中,判斷是否有“*/”結尾
if flag == True :
if line.find("*/") != -1:
flag = False
if line[-2:] != "*/":
count = count+1
continue
#排除以上條件後,行數增加一
count = count+1
f.close()
return count
'''
計算該檔案目錄下所有符合條件的行數
'''
def count_lines(file_dir):
#total_lines表示總行數,file_nums表示總檔案數
total_lines = 0
file_nums = 0
for root, dirs, files in os.walk(file_dir):
for file in files:
#不計算本檔案的行數
if file == "countLines.py":
continue
#只計算規範命名檔案, 如[檔名.檔案型別]
file_type = file.split('.')
if len(file_type) > 1 :
#如果想計算其他型別的檔案,可以在這裡進行修改
if file_type[1] not in ["py", "c", "cc", "cpp", "h"]:
continue
else:
continue
file_name = root +"\\" + file
lines = get_lines(file_name)
total_lines = total_lines + lines
print file_name + " contains lines : " + repr(lines)
file_nums = file_nums + 1
#輸出結果
print "------------------------------------"
print "Total Files : " + repr(file_nums)
print "Total lines : " + repr(total_lines)
print "------------------------------------"
if __name__ == '__main__':
cur_path = os.path.split(os.path.realpath(__file__))[0]
count_lines(cur_path)
raw_input("Press any key to exit...")
相關推薦
Python小工具:統計程式碼行數
本身程式碼難度不大,就是一個心血來潮做的小玩意 功能介紹 實現對於指定的字尾檔案進行行數統計 可以忽略指定的資料夾,對於一些IDE自動生成的程式碼可以進行忽略(預設忽略二進位制檔案) 對於檔案建立時間進行統計 Todo_List 把忽略資料夾的功能支援正則,現在的忽略
統計程式碼行數的python小工具
一個用python實現的統計程式碼行數的小工具 先立個flag, 新年新目標,希望2018年程式碼行數可以寫到五萬行。 實現功能 計算出某一目錄以及子目錄下程式碼檔案的行數 在計算程式碼的過程中,只對標準命名的檔案進行統計,如[檔名.檔案型別] 排除
統計專案的程式碼行數(python處女作)
前些日子做了個小專案,特別想知道自己編了多少的程式碼量,我就想弄個小程式統計一下程式碼行,想起曾經統計程式碼行用的方法是全部匯入到Eclipse專案中,然後用正則表示式匹配。eclipse -> search -> file -> 勾選regular ex
一個統計PHP程式碼行數的小程式碼
想統計一下專案中一共有多少行程式碼,結果沒找到什麼好的工具,就自己寫了一個。 效率不怎麼樣。 <?php /** * Created by PhpStorm. * User: luyanfe
用Eclipse 統計程式碼行數小技巧
今天公司SQA問我目前專案程式碼行數有多少,我當時就是想,以前好像寫過類似的統計工具但是一時又找不到 公司網路又不能下載,所以想想eclipse是不是又類似功能,找了下沒有,但突然一想有一個轉彎方法:統計工程裡面的\n個數 1. 按 CTRL+H 開啟查詢對話方塊 選擇fi
如何在Eclipse統計程式碼行數
使用Eclipse可以方便的統計工程或檔案的程式碼行數,方法如下: 1.點選要統計的專案或資料夾,在選單欄點選Search,然後點選File... 2.選中正則表示式(Regular expression),並在搜尋文字框輸入\n 3.在檔名中輸入*.java 4.在
Flask統計程式碼行數
流程: 1.獲取前端的檔案 2.判斷檔案是否zip檔案 3.解壓壓縮包並儲存 4.遍歷解壓後的資料夾 5.判斷檔案是否py檔案,將絕對路徑新增到列表 6.迴圈列表,排除註釋和空號,統計行數 from flask import Blueprint from flask
TFS 裡統計程式碼行數
****** Script for SelectTopNRows command from SSMS ******/ SELECT TeamProjectProjectNodeName 專案名稱 ,checkedinbyname 開發人員 ,SUM
iOS專案統計程式碼行數
很久沒更新了,今天學習了個新技能的,統計程式碼行數,直接用終端和命令列實現,簡單,閒暇時看看的,對幫助開發發用不大;1、開啟終端管理工具2、進入指定專案的根目錄下在終端裡輸入cd,然後打一個空格,再用滑鼠把專案拖進來就行了.比如:cd /Users/tcm/Desktop/s
VS2013 用正則表示式統計程式碼行數
公司 軟體申請 著作權 這鬼東西,所以在網上找了下統計方法,網上的正則表示式 (^:b*[^:b#/]+.*$)似乎不行,查了原因 去掉了了 : 號的匹配可行,具體如下: ^b*[^:b#/]+.*$
VS統計程式碼行數
按CTRL+SHIFT+F (Find in files),勾上支援正則表示式,然後輸入搜尋內容: ^:b*[^:b#/]+.*$ #開頭和/開頭或者空行都不計入程式碼量。如果需要只統計程式碼檔案的程式碼量,可以選擇查詢檔案的型別,比如什麼*.xml, *.resx….可以不檢查,只查*.cs,*.c,
maven編寫外掛——統計程式碼行數
前言 使用maven外掛可以將一些有意思的功能抽象成maven外掛服務,安裝到本地maven倉庫以後,可以很方便的使用功能,也可以在其他專案當中引用外掛,使用外掛功能。 下面完成統計目錄下包含的指定型別的檔案,以及該型別所有檔案的行數總和,可以用來統
在idea中統計程式碼行數
idea的外掛庫是灰常豐富的,統計程式碼行數可以用到外掛:Statistic。 1.CTRL+ALT+S(或者File→Settings),進入Plugins,點選Browse Repositories 2.搜尋Statistic,選擇安裝。(如果公司有限制網路,可
統計程式碼行數
svn diff -r 1022:1000 > /home/diff 先diff出兩個版本的diff檔案 sed '/\/\*/,/\*\//d' diff | grep "^+" | sed
使用VS2010統計程式碼行數
程式碼行數統計 VS2010中本身集成了非常強大的查詢功能,使用正則表示式可以非常快捷、準確的統計程式碼行數。 統計程式碼行數所用正則表示式: “^:b*[^:b#/]+.*$” 通過查詢的功能選項還可以限定查詢的檔案型別,進而對指定範圍的檔案進行統計。 其中“#開頭和
使用 cloc 統計程式碼行數
可能大家都知道用 `wc -l` 命令進行程式碼行數統計,但是它會將程式碼中的註釋、空行所佔用的文字行都統計在內。如果想檢視一個 tar 包或一個專案目錄中“實際”的程式碼行數並且不願意自己去寫一個指令碼來做此類工作,那麼可以考慮使用 cloc。 cloc 是一個 perl
Visual Studio2013統計程式碼行數
1. 在“解決方案資源管理器”中選擇你的專案的解決方案,然後按下Ctrl+Shift+F,彈出“查詢和替換”視窗。 2. 在彈出的“查詢和替換”視窗中,“查詢內容”輸入b*[^:b#/]+.*$,“
Python小工具——統計資料夾下原始碼的行數
趁著熱情著,又趕了份統計原始碼的小工具 程式是統計java檔案的,以後有機會更新成統計各個原始碼版本的程式 統計目錄下每個檔案的總行數,正常行數,註釋行數,空白行數 和整個目錄下總的 這些行數。 程式執行後,自動在指定目錄生成一個result.txt檔案 同樣的利用
用shell實現一個小指令碼,用來同來統計自己某個檔案下的程式碼,總的程式碼行數,總的註釋量,總的空行量?支援遍歷查詢,支援軟連結查詢
[[email protected] yunwei]# cat sum_code_row_version1.4.sh #!/bin/bash # File Name: sum_code_row.sh # Author: Liwqiang # mail: [email
基於py3的程式碼行數統計工具(簡易版)
#encoding = utf-8 import os def get_python_file_abspath(dirpath,all_files = []): '''獲取指定資料夾下python檔名''' #先判斷指定的路徑是檔案還是目錄 if o