Mac OS 下統計代碼行數


作為編程人員,項目中的代碼行數很有必要。
Windows 下比較成熟的工具較多,而Mac下工具比較少。
這里舉幾個Mac 下統計代碼行數的方法:

自定義腳本:

腳本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 命令進行代碼行數統計,但是它會將代碼中的注釋、空行所占用的文本行都統計在內。如果想查看一個 tar 包或一個項目目錄中“實際”的代碼行數並且不願意自己去寫一個腳本來做此類工作,那么可以考慮使用 cloc。

cloc 是一個 perl 腳本,它可以統計很多種編程語言的代碼文件中的空行、注釋以及實際的代 碼行數。

CLOC是Count Lines of Code的意思,可以計算空行數、注釋行數、各種語言的有效行數,還可以比較兩個代碼庫在各種行數之間的不同。CLOC是完全由Perl實現的,不依賴第三方組件,移植性強。

下載安裝 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 

對當前目錄進行統計

$ 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 ------------------------------------------------------------------------------- 

優點:
過濾了空行;
區分了注釋和代理;
自動識別不同語言;

編寫一個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"); } 

重新統計:

$ 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. ## 統計一個 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 ------------------------------------------------------------------------------- ## 統計某個類型的文件 命令:cloc *.c *.h 簡介:該命令會統計當前文件夾下所有符合.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: 這里只會統計當前目錄下的.py 文件,不會進行遞歸。 統計結果輸出到指定文件: 使用 --report-file 選項。 舉例: $ cloc ./ -report-file a.txt 69 text files. 60 unique files. 52 files ignored. Wrote a.txt ## 統計每個文件的代碼數: 使用 --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下統計代碼行數cloc

簡介:

csdn 上的一個介紹...

下載路徑:
https://sourceforge.net/projects/cloc/

http://cloc.sourceforge.net/

https://sourceforge.net/p/cloc/code/HEAD/tree/trunk/cloc

簡介:

官網的舊地址。
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
簡介:

官網。

不同環境下的安裝。

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


官網還推薦了其他代碼統計工具:

Sonar
Ohcount
SLOCCount
sclc
USC's CODECOUNT
loc

利用Mac 終端命令統計代碼行數
http://blog.csdn.net/colawjy/article/details/46425715
簡介:

利用shell命令。

Mac OS 下統計代碼行數的工具
http://www.cnblogs.com/wengzilin/p/4580646.html
一個轉載:
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  上的內容。

英文文章,解釋還是比較全面的。 

有統計 .zip, .tar 的舉例,有 `-by-file`的示例。 

http://www.jianshu.com/p/7c23265f0fed
PPRows for Mac
簡介:

一作者自己開發的一個圖形界面工具。可以體驗一下。

github地址:https://github.com/jkpang/PPRows



作者:jiaxiaolei
鏈接:https://www.jianshu.com/p/cb0d11b417ca
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM