cloc工具 linux,Linux下源代码行数统计工具(sloccount, cloc等)

在windows下总是有很多源代码统计工具, 比如SourceCounter(源代码统计精灵)等工具

之前我总是使用如下命令统计源代码的信息, 繁琐而可读性差

find . -type f -name "*.[hc]" | xargs cat | wc -l

或者

find . -name "*.[hc]" | xargs -L 1 wc -l | awk '{print $1}' | while read num; do total=$((total+num)); echo $total; done

1 sloccount源代码行数统计工具

sloccount=Count Source Lines Of Code

1.1 Ubuntu安装

sudo apt-get install sloccount

1.2 使用

sloccount [--version] [--cached] [--append] [ --datadir directory ]

[--follow] [--duplicates] [--crossdups] [--autogen] [--multiproject]

[--filecount] [--wide] [--details] [ --effort F E ] [ --schedule F E ] [

--personcost cost ] [ --overhead overhead ] [ --addlang language ] [

--addlangall ] [--] directories

--cached

跳过计算过程,直接使用上次结果

参数

描述

–multiproject

如果该文件夹包括一系列的子文件夹,而它们中的每一个都是相对独立开发的不同的项目,那么使用”–multiproject”选项,评估将会正确的考虑到这一点

–filecount

显示文件数目而非代码行数

–details

显示每个源文件的详细信息

–duplicates

算上所有重复的(默认情况下如果文件有相同的内容,则只算一个)

–crossdups

如果顶目录包含几个不同的项目,并且你想把不同的项目下重复的文件在每个项目中都算上一次,则使用该选项

1.3 转换成html文件

有一个sloc2html.py可以把生成的结果转换为带图形统计结果的html文件. 缺点是对中文支持不好

例如:

sloccount --wide --multiproject SourceDirectory > result.txt

sloc2html.py result.txt > result.html

再打开result.html即可看到结果形如:

0818b9ca8b590ca3270a3433284dd417.png

wget http://www.dwheeler.com/sloccount/sloc2html.py.txt -O sloc2html.py

sloc2html.py文件源代码如下

#!/usr/bin/env python

# Written by Rasmus Toftdahl Olesen

# Modified slightly by David A. Wheeler

# Released under the GNU General Public License v. 2 or higher

from string import *

import sys

NAME = "sloc2html"

VERSION = "0.0.2"

if len(sys.argv) != 2:

print "Usage:"

print "\t" + sys.argv[0] + " "

print "\nThe output of sloccount should be with --wide and --multiproject formatting"

sys.exit()

colors = { "python" : "blue",

"ansic" : "yellow",

"perl" : "purple",

"cpp" : "green",

"sh" : "red",

"yacc" : "brown",

"lex" : "silver"

# Feel free to make more specific colors.

"ruby" : "maroon",

"cs" : "gray",

"java" : "navy",

"ada" : "olive",

"lisp" : "fuchsia",

"objc" : "purple",

"fortran" : "purple",

"cobol" : "purple",

"pascal" : "purple",

"asm" : "purple",

"csh" : "purple",

"tcl" : "purple",

"exp" : "purple",

"awk" : "purple",

"sed" : "purple",

"makefile" : "purple",

"sql" : "purple",

"php" : "purple",

"modula3" : "purple",

"ml" : "purple",

"haskell" : "purple"

}

print ""

print "

"

print "

Counted Source Lines of Code (SLOC)"

print ""

print "

"

print "

Counted Source Lines of Code

"

file = open ( sys.argv[1], "r" )

print "

Projects

"

line = ""

while line != "SLOC\tDirectory\tSLOC-by-Language (Sorted)\n":

line = file.readline()

print "

print "

LinesProjectLanguage distribution"

line = file.readline()

while line != "\n":

num, project, langs = split ( line )

print "

" + num + "" + project + ""

print "

for lang in split ( langs, "," ):

l, n = split ( lang, "=" )

print "

" + l + "=" + n + " (" + str(int(float(n) / float(num) * 100)) + "%)"

print "

"

print "

"

line = file.readline()

print "

"

print "

Languages

"

while line != "Totals grouped by language (dominant language first):\n":

line = file.readline()

print "

print "

LanguageLines"

line = file.readline()

while line != "\n":

lang, lines, per = split ( line )

lang = lang[:-1]

print "

" + lang + "" + lines + " " + per + ""

line = file.readline()

print "

"

print "

Totals

"

while line == "\n":

line = file.readline()

print "

print "

Total Physical Lines of Code (SLOC):" + strip(split(line,"=")[1]) + ""

line = file.readline()

print "

Estimated development effort:" + strip(split(line,"=")[1]) + " person-years (person-months)"

line = file.readline()

line = file.readline()

print "

Schedule estimate:" + strip(split(line,"=")[1]) + " years (months)"

line = file.readline()

line = file.readline()

print "

Total estimated cost to develop:" + strip(split(line,"=")[1]) + ""

print "

"

file.close()

print "Please credit this data as \"generated using 'SLOCCount' by David A. Wheeler.\"\n"

print ""

print ""

2 cloc代码行数统计工具

cloc也可以用来统计源代码的行数, 其本质是一个perl的脚本

安装

sudo apt-get install cloc

使用

进入到需要统计的目录执行

cloc .

0818b9ca8b590ca3270a3433284dd417.png

其本质是一个perl的脚本, 可以用

file `which cloc`

0818b9ca8b590ca3270a3433284dd417.png

可以使用

cat `which cloc`

查看其源代码的信息

0818b9ca8b590ca3270a3433284dd417.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值