作者的blog: blog.never-online.net
"Never Modules"-NCC(never code counter) tools-代码统计工具V1.01
统计js,asp,aspx,cs,html,xml等
把源代码存为(hta)文件,因为hta文件没有状态栏,所以我这里建议大家存为html文件,这样可以在状态栏下看到NCC扫描的进度,我这里把NCC的maxloop设置为3000,所以文件统计到3000的时候,会自动终止,以防文件夹中文件太多造成运行的负担。
主要功能有:
1、可自己选择文件夹,或者单个文件。
2、自己选择文件后缀名进行统计
3、output information输出的数据有:
文件个数,
文件的代码字节数,
单词个数,
代码行数,
总代码字节数
总代码行数。
4、可以将数据用SaveAs存为html或者txt文件
运行代码框
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title> NCC Tools - http://www.never-online.net </title>
<hta:application id="NCC"
applicationname="NCC application"
border="thin"
borderstyle="normal"
caption="yes"
icon="http://www.never-online.net/images/icon.ico"
maximizebutton="no"
minimizebutton="yes"
showintaskbar="no"
singleinstance="yes"
sysmenu="yes"
version="1.01"
windowState="normal"/>
<meta http-equiv="ImageToolbar" content="no" />
<meta name="author" content="BlueDestiny, never-online"/>
<meta name="keywords" content="never modules, Mozilla CSS, C#, .net, Refercence, BlueDestiny, never-online, www.never-online.net"/>
<meta name="description" content="BlueDestiny, never-online"/>
<meta name="title" content="never code counter (NCC) - http://www.never-online.net" />
<meta name="creator.name" content="Genius Lau, never-online, blueDestiny" />
<style type="text/css" media="all" title="Default">
body { background-color:buttonface; }
body,td,input { font:9pt tahoma; }
h1 { text-align:center; font-weight: bold; font-family: tahoma; font-size: 16pt; }
fieldset { height:300px; }
legend { font-weight: bolder; }
.btn { border-left:4px solid #444; border-top:1px solid #444; border-bottom:1px solid #444; border-right:1px solid #444; }
.two { width:200px; }
.txt { border:1px solid #444; }
.file { display:none; width:300px; border-left:4px solid #444; border-top:1px solid #444; border-bottom:1px solid #444; border-right:1px solid #444; }
#loading { display:none; filter:alpha(opacity=70); border:1px solid #444444; background-color:appworkspace; color:#ffffff; width:300px; font-size:13px; font-weight:bold; font-family:arial; padding:10px; position:absolute; top:0; left:0; }
#left { line-height:200%; width:50%; padding:20px; }
#left ul { margin:0 0 0 10px; }
#left li { list-style-type: decimal; margin:20px 10px 15px 10px; }
#footer { font-size:11px; text-align:center; }
#right { padding:20px; width:50%; }
#outputWrapper { padding:10px; }
</style>
<script type="text/javascript">
//<![CDATA[
//======================================================================================
//
// Module : NCC - never code counter V1.01 beta
// Script by : never-online, blueDestiny
// Updated : 2006-6-25
// Copyright : Miracle technology all reserved
// Website : http://www.never-online.net
// Email : blueDestiny@126.com
// Blog : http://blog.csdn.net/blueDestiny, http://blog.never-online.net/
// Comment : Permission given to use this script in ANY kind of applications if
// header lines are left unchanged.
//
//======================================================================================
//====================================================================================
// Ultity Function
var doc = document, wnd = window;
String.prototype.trim = function() { return this.replace(/(^\s*)|(\s*$)/g, ''); };
Array.prototype.push = function(x) { this[this.length] = x; };
Array.prototype.pop = function() { return this[this.length-1]; };
//====================================================================================
var NCC =
{
// Private Variables
_maxloop : 3000,
_version : "1.02 beta",
_author : "BlueDestiny, never-online",
_webURI : "http://www.never-online.net",
_lines : {"total":0},
_bytes : {"total":0},
_files : {"total":0},
_words : {"total":0},
_error : {},
_filesExts : "cs,js,asp,xml,aspx",
_fsoObj : new ActiveXObject("Scripting.FileSystemObject")
// make sure Your fso activeXObject is availd. otherwise can not runing next code
};
// Public Functions API
NCC.splash = function()
{
};
NCC.init = function()
{
var fileDlgObjStr = '<object id="filepathDlg"'
+' width="0px" height="0px"'
+' classid="CLSID:F9043C85-F6F2-101A-A3C9-08002B2F49FB"'
+' codebase="http://activex.microsoft.com/controls/vb5/comdlg32.cab">'
+'</object>';
var folderDlgObjStr = '<object id="folderpathDlg"'
+' classid="CLSID:13709620-C279-11CE-A49E-444553540000"'
+' width="0" height="0">'
+'</object>';
var loadingObjStr = '<div id="loading"></div>';
doc.body.insertAdjacentHTML("beforeEnd", fileDlgObjStr);
doc.body.insertAdjacentHTML("beforeEnd", folderDlgObjStr);
doc.body.insertAdjacentHTML("beforeEnd", loadingObjStr);
}
NCC.chkFileExts = function(filenameStr)
{
var a = this._filesExts.trim().split(",");
var f = this.getFileExts(filenameStr);
for (var i=0; i<a.length; i++)
if (f.toLowerCase() == a[i].toLowerCase()) return true;
return false;
};
NCC.output = function(wrapperID)
{
var k, x; x=[];
x.push("------------- Files -------------");
// -- part of files --
for (k in this._files)
x.push("[" +k+ "]: " +this._files[k]+ "");
// -- part of words --
x.push("------------- Words -------------");
for (k in this._words)
x.push("[" +k+ "]: " +this._words[k]+ "");
// -- part of bytes --
x.push("------------- Bytes -------------");
for (k in this._bytes)
x.push("[" +k+ "]: " +this._bytes[k]+ "");
// -- part of lines --
x.push("------------- Lines -------------");
for (k in this._lines)
x.push("[" +k+ "]: " +this._lines[k]+ "");
x = x.join("\n");
if (wrapperID) {
var a = doc.all(wrapperID), t=a.tagName.toLowerCase();
if (!a) return wnd.alert("HTMLElement ID \"" +wrapperID+ "\" is not valid!");
if (t=="input" || t=="textarea") a.value = x;
else a.innerHTML = x.replace(/\n/,"<br/>");
}
return x;
};
NCC.saveAs = function(elIdorStr)
{
var dlg = doc.all("filepathDlg");
var a = doc.all(elIdorStr);
if (a) {
var t = a.tagName.toLowerCase();
var fileStr = (t=="input" || t=="textarea") ? a.value : a.innerHTML.replace(/<br(\/)?>/g, "\n");
} else {
fileStr = elIdorStr;
}
dlg.cancelError=tr