作為編程人員涩堤,項目中的代碼行數(shù)很有必要老厌。
Windows 下比較成熟的工具較多菌瘪,而Mac下工具比較少鱼响。
這里舉幾個Mac 下統(tǒng)計代碼行數(shù)的方法:
自定義腳本:
腳本1:
終端進入目錄竖瘾,輸入:
$ find . "(" -name "*.m" -or -name "*.mm" -or -name "*.cpp" -or -name "*.h" -or -name "*.rss" ")" -print | xargs wc -l
缺點:
需要自定義腳本:不同的編程語言沟突,有不同的文件后綴名,需要自行配置准浴;
不能過濾掉注釋事扭;
不能過濾掉空行
腳本2:
$ find . -name "*.m" -or -name "*.h" -or -name "*.xib" -or -name "*.c" |xargs grep -v "^$"|wc -l
改進:
去掉空行
xargs grep -v "^$"
CLOC:
大家都知道用 wc -l
命令進行代碼行數(shù)統(tǒng)計,但是它會將代碼中的注釋乐横、空行所占用的文本行都統(tǒng)計在內(nèi)求橄。如果想查看一個 tar 包或一個項目目錄中“實際”的代碼行數(shù)并且不愿意自己去寫一個腳本來做此類工作,那么可以考慮使用 cloc葡公。
cloc 是一個 perl 腳本罐农,它可以統(tǒng)計很多種編程語言的代碼文件中的空行、注釋以及實際的代 碼行數(shù)催什。
CLOC是Count Lines of Code的意思涵亏,可以計算空行數(shù)、注釋行數(shù)蒲凶、各種語言的有效行數(shù)气筋,還可以比較兩個代碼庫在各種行數(shù)之間的不同。CLOC是完全由Perl實現(xiàn)的旋圆,不依賴第三方組件宠默,移植性強。
下載安裝 cloc.
$ brew install cloc
==> Downloading https://downloads.sourceforge.net/project/cloc/cloc/v1.62/cloc-1.62.pl
######################################################################## 100.0%
?? /usr/local/Cellar/cloc/1.62: 2 files, 372K, built in 13 seconds
對當前目錄進行統(tǒng)計
$ cloc ./
105 text files.
89 unique files.
27 files ignored.
http://cloc.sourceforge.net v 1.62 T=0.37 s (174.4 files/s, 13545.8 lines/s)
-------------------------------------------------------------------------------
Language files blank comment code
-------------------------------------------------------------------------------
Python 38 480 507 2632
Bourne Shell 17 82 183 674
HTML 2 21 1 124
JSON 1 0 0 99
YAML 3 18 7 79
Javascript 3 0 98 43
CSS 1 0 1 1
-------------------------------------------------------------------------------
SUM: 65 601 797 3652
-------------------------------------------------------------------------------
優(yōu)點:
過濾了空行灵巧;
區(qū)分了注釋和代理搀矫;
自動識別不同語言;
編寫一個java的文件刻肄。
filename: test.java
/*************************************************************************
> File Name: test.java
> Author:
> Mail:
> Created Time: 日 7/23 23:06:09 2017
************************************************************************/
public class test
public static void main(String[] args){}
System.out.println("come into main");
}
重新統(tǒng)計:
$ cloc ./
106 text files.
90 unique files.
27 files ignored.
http://cloc.sourceforge.net v 1.62 T=0.36 s (181.4 files/s, 13940.1 lines/s)
-------------------------------------------------------------------------------
Language files blank comment code
-------------------------------------------------------------------------------
Python 38 486 508 2632
Bourne Shell 17 82 183 674
HTML 2 21 1 124
JSON 1 0 0 99
YAML 3 18 7 79
Javascript 3 0 98 43
Java 1 4 6 4
CSS 1 0 1 1
-------------------------------------------------------------------------------
SUM: 66 611 804 3656
-------------------------------------------------------------------------------
專題
$ cloc --help
Usage: cloc [options] <file(s)/dir(s)> | <set 1> <set 2> | <report files>
Count, or compute differences of, physical lines of source code in the
given files (may be archives such as compressed tarballs or zip files)
and/or recursively below the given directories.
## 統(tǒng)計一個 tar 包中的代碼行
$ cloc small-2.0.tar.gz
42 text files.
41 unique files.
4 files ignored.
http://cloc.sourceforge.net v 1.50 T=1.0 s (38.0 files/s, 3451.0 lines/s)
-------------------------------------------------------------------------------
Language files blank comment code
-------------------------------------------------------------------------------
C 21 435 482 1695
C/C++ Header 8 102 161 275
m4 4 18 4 136
make 4 18 72 29
Bourne Shell 1 2 20 2
-------------------------------------------------------------------------------
SUM: 38 575 739 2137
-------------------------------------------------------------------------------
## 統(tǒng)計某個類型的文件
命令:cloc *.c *.h
簡介:該命令會統(tǒng)計當前文件夾下所有符合.c和.h的文件瓤球。
舉例:
$ cloc *.py
2 text files.
2 unique files.
0 files ignored.
http://cloc.sourceforge.net v 1.62 T=0.01 s (270.8 files/s, 9207.8 lines/s)
-------------------------------------------------------------------------------
Language files blank comment code
-------------------------------------------------------------------------------
Python 2 15 8 45
-------------------------------------------------------------------------------
SUM: 2 15 8 45
-------------------------------------------------------------------------------
#NOTE: 這里只會統(tǒng)計當前目錄下的.py 文件,不會進行遞歸敏弃。
統(tǒng)計結(jié)果輸出到指定文件:
使用 --report-file 選項卦羡。
舉例:
$ cloc ./ -report-file a.txt
69 text files.
60 unique files.
52 files ignored.
Wrote a.txt
## 統(tǒng)計每個文件的代碼數(shù):
使用 --by-file 選項
舉例:
$ cloc --by-file my_project/
2 text files.
2 unique files.
0 files ignored.
http://cloc.sourceforge.net v 1.60 T=0.01 s (149.5 files/s, 448.6 lines/s)
--------------------------------------------------------------------------------
File blank comment code
--------------------------------------------------------------------------------
my_project/perl.pl 1 0 2
my_project/bash.sh 1 0 2
--------------------------------------------------------------------------------
SUM: 2 0 4
--------------------------------------------------------------------------------
查看支持的語言:
$ cloc --show-lang
ABAP (abap)
ActionScript (as)
Ada (ada, adb, ads, pad)
ADSO/IDSM (adso)
AMPLE (ample, dofile, startup)
Ant (build.xml, build.xml)
Apex Trigger (trigger)
Arduino Sketch (ino, pde)
ASP (asa, asp)
ASP.Net (asax, ascx, asmx, aspx, master, sitemap, webinfo)
AspectJ (aj)
Assembly (asm, S, s)
AutoHotkey (ahk)
awk (awk)
Blade (blade.php)
Bourne Again Shell (bash)
Bourne Shell (sh)
builder (xml.builder)
C (c, ec, pgc)
...
$ cloc --show-lang | wc
195 629 7466
忽略某幾個目錄:
--exclude-dir=<D1>[,D2,] Exclude the given comma separated directories
D1, D2, D3, et cetera, from being scanned. For
example --exclude-dir=.cache,test will skip
all files and subdirectories that have /.cache/
or /test/ as their parent directory.
Directories named .bzr, .cvs, .hg, .git, and
.svn are always excluded.
This option only works with individual directory
names so including file path separators is not
allowed. Use --fullpath and --not-match-d=<regex>
to supply a regex matching multiple subdirectories.
舉例:
$ cloc ./ --exclude-dir=docs,tests
在windows 下的使用
下載 cloc.exe 文件就可用像 mac 下的 cloc 命令一樣使用。
https://blog.csdn.net/liutengteng130/article/details/79696898
【工具篇】Windows下統(tǒng)計代碼行數(shù)cloc
簡介:
csdn 上的一個介紹...
下載路徑:
https://sourceforge.net/projects/cloc/
https://sourceforge.net/p/cloc/code/HEAD/tree/trunk/cloc
簡介:
官網(wǎng)的舊地址麦到。
cloc is now being developed at https://github.com/AlDanial/cloc
Legacy releases (1.64 and earlier) can still be found here.
https://github.com/AlDanial/cloc
簡介:
官網(wǎng)虹茶。
不同環(huán)境下的安裝。
npm install -g cloc # https://www.npmjs.com/package/cloc
sudo apt-get install cloc # Debian, Ubuntu
sudo yum install cloc # Red Hat, Fedora
sudo dnf install cloc # Fedora 22 or later
sudo pacman -S cloc # Arch
emerge -av dev-util/cloc # Gentoo https://packages.gentoo.org/packages/dev-util/cloc
sudo pkg install cloc # FreeBSD
sudo port install cloc # Mac OS X with MacPorts
brew install cloc # Mac OS X with Homebrew
choco install cloc # Windows with Chocolatey
官網(wǎng)還推薦了其他代碼統(tǒng)計工具:
Sonar
Ohcount
SLOCCount
sclc
USC's CODECOUNT
loc
利用Mac 終端命令統(tǒng)計代碼行數(shù)
http://blog.csdn.net/colawjy/article/details/46425715
簡介:
利用shell命令隅要。
Mac OS 下統(tǒng)計代碼行數(shù)的工具
http://www.cnblogs.com/wengzilin/p/4580646.html
一個轉(zhuǎn)載:
http://blog.csdn.net/forwardto9/article/details/50389420
簡介:
下載安裝了cloc.
比較詳細的介紹蝴罪。
Counting lines of code with cloc
https://linuxconfig.org/counting-lines-of-code-with-cloc
簡介:
linuxconfig.org 上的內(nèi)容。
英文文章步清,解釋還是比較全面的要门。
有統(tǒng)計 .zip虏肾, .tar 的舉例,有 `-by-file`的示例欢搜。
http://www.reibang.com/p/7c23265f0fed
PPRows for Mac
簡介:
一作者自己開發(fā)的一個圖形界面工具封豪。可以體驗一下炒瘟。
github地址:https://github.com/jkpang/PPRows