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

优快云GitHub
Linux下源代码行数统计工具(sloccount, cloc等)AderXCoding/system/tools/sourcecount


知识共享许可协议本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可

在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

官网 : http://www.dwheeler.com/sloccount/

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即可看到结果形如:

result.html示例

下载地址 http://www.dwheeler.com/sloccount/sloc2html.py.txt

输出样例 http://www.dwheeler.com/sloccount/sloc2html-example.html

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

sloc2html.py文件源代码如下

#!/usr/bin/env python
# Written by Rasmus Toftdahl Olesen <rto@pohldata.dk>
# 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] + " <sloc output file>"
    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 "<html>"
print "<head>"
print "<title>Counted Source Lines of Code (SLOC)</title>"
print "</head>"
print "<body>"
print "<h1>Counted Source Lines of Code</h1>"

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

print "<h2>Projects</h2>"
line = ""
while line != "SLOC\tDirectory\tSLOC-by-Language (Sorted)\n":
    line = file.readline()

print "<table>"
print "<tr><th>Lines</th><th>Project</th><th>Language distribution</th></tr>"
line = file.readline()
while line != "\n":
    num, project, langs = split ( line )
    print "<tr><td>" + num + "</td><td>" + project + "</td><td>"
    print "<table width=\"500\"><tr>"
    for lang in split ( langs, "," ):
        l, n = split ( lang, "=" )
        print "<td bgcolor=\"" + colors[l] + "\" width=\"" + str( float(n) / float(num) * 500 ) + "\">" + l + "=" + n + "&nbsp;(" + str(int(float(n) / float(num) * 100)) + "%)</td>"
    print "</tr></table>"
    print "</td></tr>"
    line = file.readline()
print "</table>"

print "<h2>Languages</h2>"
while line != "Totals grouped by language (dominant language first):\n":
    line = file.readline()

print "<table>"
print "<tr><th>Language</th><th>Lines</th></tr>"
line = file.readline()
while line != "\n":
    lang, lines, per = split ( line )
    lang = lang[:-1]
    print "<tr><td bgcolor=\"" + colors[lang] + "\">" + lang + "</td><td>" + lines + " " + per + "</td></tr>"
    line = file.readline()
print "</table>"

print "<h2>Totals</h2>"
while line == "\n":
    line = file.readline()

print "<table>"
print "<tr><td>Total Physical Lines of Code (SLOC):</td><td>" + strip(split(line,"=")[1]) + "</td></tr>"
line = file.readline()
print "<tr><td>Estimated development effort:</td><td>" + strip(split(line,"=")[1]) + " person-years (person-months)</td></tr>"
line = file.readline()
line = file.readline()
print "<tr><td>Schedule estimate:</td><td>" + strip(split(line,"=")[1]) + " years (months)</td></tr>"
line = file.readline()
line = file.readline()
print "<tr><td>Total estimated cost to develop:</td><td>" + strip(split(line,"=")[1]) + "</td></tr>"
print "</table>"

file.close()

print "Please credit this data as \"generated using 'SLOCCount' by David A. Wheeler.\"\n"
print "</body>"
print "</html>"

2 cloc代码行数统计工具


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

安装

sudo apt-get install cloc

使用

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

cloc .

cloc统计源代码行数

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

file `which cloc`

file <code>which cloc</code>

可以使用

cat `which cloc`

查看其源代码的信息

查看cloc源代码的信息

下载在这里: http://boomworks.googlecode.com/files/SourceCounter-2.0.7.39.7z http://boomworks.googlecode.com/files/SourceCounter-2.0.6.37.zip 免费的源代码行数统计工具,支持多种代码格式。可以对 VC/JAVA/VB/Delphi/ASP/HTML 项目的代码进行统计,并能保存统计的结果。 最新版本发布(What's New) SourceCounter(源代码统计精灵) 2.0 版 !- Boom 2008-10-26 + 支持对 ASP 和 HTML 文件的统计 + 保存统计源代码的文件夹路径 SourceCounter(源代码统计精灵) 1.6.5.2 版 !- Boom 2005-12-27 + 统计结果保存 .CSV 文件格式 + 统计结果加入文件路径 * 修改结果保存时,TotalSize 没有单位 * 修改结果保存格式 SourceCounter(源代码统计精灵) 1.4.4.0 版 !- Boom 2005-12-10 SourceCounter(源代码统计精灵) 1.3.2.0 版 !- Boom 2005-11-30 * bugfix Pascal 代码的统计 * bugfix 统计保存扩展名问题 SourceCounter(源代码统计精灵) 1.2.2.0 版 !- Boom 2005-11-28 SourceCounter(源代码统计精灵) 1.1.1.0 版 !- Boom 2005-11-27 SourceCounter(源代码统计精灵) 1.0.1.0 版 !- Boom 2005-11-26 + 实现对 Basic 代码的统计 + 实现对 C++/Java/Pascal 代码的统计 SourceCounter(源代码统计精灵) 0.9.1.0 版 !- Boom 2005-11-24 主要功能和特点(Features) 支持对 C/C++/JAVA 代码的统计 支持对 BASIC 代码的统计 支持对 Delphi 代码的统计 支持对 ASP 代码的统计 支持对 HTML 代码的统计 支持对 文本文件的统计 支持统计结果保存为 .TXT 文件格式 支持统计结果保存为 .CSV 文件格式(可以方便地导入到 Excel) 联系我们(Contact) E-mail: Boom -------------------------------------------------------------------------------- Copyright © 2002-2005 BoomWorks.Net ( Since 1999 ) , All Rights Reserved. Thank you to visit this place.
简介(Introduction) 免费的源代码统计分析工具,能够统计包括:代码行数、开发工数、项目成本、质量指标等项目信息,支持20多种源代码格式。具有统计迅速、准确的优点,是程序开发人员的必备工具。可以对 C++、VB.Net、VB、C#、JAVA、Delphi、ASP.Net、ASP、JSP、HTML 等项目进行统计,并能保存统计的结果。 下载地址(Download) http://boomworks.googlecode.com/files/SourceCounter-2.4.80.6.7z 主要功能(Features) * 支持对 20 多种代码格式进行统计 * 可以自由添加想要统计的文件的扩展名 * 支持多目录和包含子目录的统计方式 * 能够计算代码的人月数和成本 * 能够计算项目的各种质量指标(包括:测试用例密度、缺陷检出密度) * 支持统计结果保存为 .CSV 文件格式(可以方便地导入到 Excel) * 支持多国语言界面(英文、简体中文、繁体中文、日语等) * 保存上一次统计时的目录和代码类型 更新(Update) * 2.4.80.6版 - BOOM 2009-8-5 o 保存上一次统计时的目录和代码类型 * 2.4.61.99版 - BOOM 2009-4-8 o 更新代码统计算法 * 2.4.36.58版 - BOOM 2009-3-22 o 可以自由添加想要统计的文件的扩展名 * 2.2.32.49版 - BOOM 2009-3-10 o 增加对.cc/.hh/.hpp扩展名的支持 * 2.2.30.36版 - BOOM 2009-3-3 o 追加代码质量指标统计功能 o 界面更新 o 使用新域名BoomWorks?.Org * 2.1.24.11版 - B O O M 2008/11/24 o 修正不能统计 .C 扩展名代码问题 o 追加关于对话框 boomworks.org 连接 * 2.1.22.4版 - B O O M 2008/11/16 o 开始支持对 PHP 代码的统计 o 更新 ASPX 代码统计的算法 * 2.1.14.75版 - B O O M 2008/11/08 o 增加计算代码的人月数和成本的功能 * 2.0.10.61版 - B O O M 2008/11/1 o .csv 统计结果保存格式更改 o 支持多国语言界面(英文、简体中文、繁体中文、日语等) * 2.0.1.1版 - B O O M 2008/10/23 o 支持多路径统计 o 支持更多文件格式 * 1.6.6.4版 - B O O M 2006/1/26 o 支持对 ASP 和 HTML 文件的统计 o 保存统计源代码的文件夹路径 联系我们(Contact) * boomworks@gmail.com * boomworks@hotmail.com
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值