linux下有没有什么好的代码统计工具

linux下有没有什么好的代码统计工具,第1张

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

下载地址 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 + " (" + 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>"

命令行高手用vi,配好了不管是语法高亮还是各种调整都很方便,不过学习成本很高

eclipse加cdt,可以搞定大多数代码,属于Linux传统神器

VScode,代码阅读新秀

wine+source insight,黑科技,Windows上用惯si的可以试试

有很多啊,有各种Linux发行版自带的gedit、还有拥有很多插件的Sublime Text 2或3、微软出品的VScode文本编辑器(有Linux版)、Atom文本编辑器,都支持各种编程语言,有代码高亮、自动补全等功能,都可以作为代码阅读工具。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8351934.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-15
下一篇2023-04-15

发表评论

登录后才能评论

评论列表(0条)

    保存