华域联盟 hta NCC Tools(never code counter tools) V1.0.1发布代码-代码统计工具

NCC Tools(never code counter tools) V1.0.1发布代码-代码统计工具

界面如下图:把源代码存为(hta)文件,因为hta文件没有状态栏,所以我这里建议大家存为html文件,这样可以在状态栏下看到

NCC扫描的进度,我这里把NCC的maxloop设置为3000,所以文件统计到3000的时候,会自动终止,以防文件夹中文件太多造成运行的负担。

如果大家喜欢这样的代码,就请关注"Never Modules"

主要功能有-

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=true;

 try {

 dlg.filter="Text Files (*.txt)|*.txt|HTM Files (*.htm)|*.htm";

 dlg.showSave();

 var f = this._fsoObj.CreateTextFile(dlg.filename,true);

 f.write(fileStr);

 f.Close();

 } catch(ex) {};

 };

 NCC.setFilesExt = function(filesExtsStr)

 {

 this._filesExts = filesExtsStr;

 return true;

 };

 NCC.getFilesExts = function()

 {

 return this._filesExts;

 };

 NCC.getFileExts = function(filenameStr)

 {

 var a=filenameStr.split(".");

 return a[a.length-1].toLowerCase();//a.pop()

 };

 NCC.selectSingleFile = function() 

 {

 var dlg = doc.all("filepathDlg");

 var fps = doc.all("filepathStr");

 var fes = this._filesExts;

 var filename="", filter="", arr=[];

 arr = fes.trim().split(",");

 for (var i=0; i<arr.length; i++)

 filter += arr[i].toUpperCase() +" Files (*." +arr[i]+ ")|*." +arr[i]+ "" +(i==arr.length-1?"":"|");

 dlg.cancelError=true;

 try {

 dlg.filter = filter;

 dlg.showOpen();

 filename = dlg.filename;

 } catch(ex) {};

 if (filename.trim()=="") return false;

 fps.value = filename;

 if (!this.chkFileExts(filename)) return wnd.alert("File Extension name \"" +filename+ "\" is not valid!");

 return filename;

 };

 NCC.selectFolder = function()

 {

 var dlg = doc.all("folderpathDlg");

 try {

 var pathObj = dlg.browseForFolder(0,"Please Select Folder:",0);

 var pathStr = pathObj.parentFolder.parseName(pathObj.Title).path;

 return pathStr;

 } catch(ex) { return false };

 };

 NCC.countFolder = function(folderpathStr) 

 {

 var ldg = doc.all("loading");

 with (ldg.style) {

 display = "block";

 top = parseInt((doc.body.clientHeight-ldg.offsetHeight)/2);

 left = parseInt((doc.body.clientWidth-ldg.offsetWidth)/2);

 }; ldg.innerHTML = "<div align=\"center\">Now Counting...</div>";

      wnd.status = "NCC Counting...";

 if (!this._fsoObj.FolderExists(folderpathStr)) {

 this.countSingleFile(folderpathStr);

 } else {

 var cnt = 0;

 function iterator(folderpathStr) {

 var a = NCC._fsoObj.getFolder(folderpathStr);

 var e = new Enumerator(a.files)

 for (; !e.atEnd(); e.moveNext()) {

            NCC.countSingleFile(e.item());

            if (cnt++>=NCC._maxloop) return;

          }

 var f = new Enumerator(a.subFolders)

 for (; !f.atEnd(); f.moveNext()) {

            iterator(f.item());

            if (cnt++>=NCC._maxloop) return;

          }

 }

 iterator(folderpathStr);

 }

 ldg.innerHTML = "<div align=\"center\">NCC Count Completely.</div>"

 wnd.status = "NCC Count Completely.";

 wnd.setTimeout(function(){ldg.style.display = "none";},3000);

 };

 NCC.countSingleFile = function(filepathStr) 

 {

 var x, a, f, e;

 var ldg = doc.all("loading");

 if (!this._fsoObj.FileExists(filepathStr)) return false;

 f = this._fsoObj.GetFile(filepathStr);

 if (this.chkFileExts(f.name))

      {

        var o = f.openAsTextStream(1);

        if (o.atEndOfStream) { x = ""; } else { x = o.ReadAll(); }

        x = x.replace(/(\n|\r)+/mg,"$1");

        a = x.split("\n");

        e = this.getFileExts(f.name);

        this._bytes["total"] += x.length;

        this._bytes[e] ? this._bytes[e]+=x.length : this._bytes[e]=x.length;

        this._lines["total"] += a.length;

        this._lines[e] ? this._lines[e]+=a.length : this._lines[e]=a.length;

        a = x.replace(/(\s|\t| )+/g," ").split(" ");

        this._words["total"] += a.length;

        this._words[e] ? this._words[e]+=a.length : this._words[e]=a.length;

        this._files["total"] ++;

        this._files[e] ? this._files[e]++ : this._files[e]=1;

      }

 wnd.status = "NCC(\"" +f.path+ "\")";

 ldg.innerHTML = "now count \"" +f.name+ "\"."

      return this.chkFileExts(f.name)

 };

 NCC.formatSingleFile = function(filepathStr)

 {

 };

 //====================================================================================

 function window.onload() {

 NCC.init();

 wnd.resizeTo(800,480);

      doc.all("outputWrapper").value = "";

 setFilesExts();//setFilesExts.call(this);

 }

 function setFilesExts() {

 doc.all("filesExts").value = NCC.getFilesExts();

 }

 function output() {

 /*

 var e = event.srcElement;

 var a = doc.body.all;

 for (var i=0; i<a.length; i++) {

 if (a[i].tagName.toLowerCase()=="input") {

 if (a[i]!=e) a[i].disabled=true;

 }

 }

 */

      NCC.setFilesExt(doc.all("filesExts").value)

 NCC.countFolder(doc.all('filepathStr').value);

 NCC.output('outputWrapper');

 }

 function changeFileExt() {

 var groupfileExts = doc.all("groupfileExt");

 var fileExtStr = [];

 for (var i=0; i<groupfileExts.length; i++) {

 if (groupfileExts[i].checked)

 fileExtStr.push(groupfileExts[i].value);

 }

 NCC.setFilesExt(fileExtStr.join(","));

 setFilesExts();

 }

 function selectSingleFile(val) {

     if (!NCC.selectSingleFile()) return "";

 doc.all(val).value = NCC.selectSingleFile();

 }

 function selectFolder(val) {

 var a = NCC.selectFolder();

 if (a==false) return "";

 doc.all(val).value = a;

 }

 function saveAs() {

 NCC.saveAs('outputWrapper');

 //NCC.saveAs(NCC.output());

 }

 //]]>

 </script>

</head>

<body id="www.never-online.net">

 <h1> NCC (never code counter) tools - http://www.never-online.net </h1>

 <fieldset>

 <legend> - Application NCC (never code counter) -</legend>

 <table width="100%" border="0" cellpadding="0" cellspacing="0">

 <tr>

 <td align="left" valign="top" id="left">

 <ul>

 <li>

 <input name="filepathStr" type="text" class="txt" value="type your file or folder path" size="30">

 <input class="btn" type="button" value=" FILE " onclick="selectSingleFile('filepathStr')"/>

 <input class="btn" type="button" value="FOLDER" onclick="selectFolder('filepathStr')"/>

 </li>

 <li>

 <input name="groupfileExt" value="asp" type="checkbox" checked onclick="changeFileExt()"/>

 .asp

 <input name="groupfileExt" value="js" type="checkbox" checked onclick="changeFileExt()"/>

 .js

 <input name="groupfileExt" value="xml" type="checkbox" checked onclick="changeFileExt()"/>

 .xml

 <input name="groupfileExt" value="aspx" type="checkbox" checked onclick="changeFileExt()"/>

 .aspx

 <input name="groupfileExt" value="cs" type="checkbox" checked onclick="changeFileExt()"/>

 .cs 

 <br/>

 <input name="filesExts" type="text" class="txt" id="filesExts" value="" size="40">

 </li>

 <li>

 <input class="btn two" type="button" value="Output Information" onclick="output()"/>

 <!-- not complete <input name="button" type="button" class="btn" onclick="NCC.format();" value="Format Code"/> -->

 </li>

 <li>

 <input class="btn two" type="button" value="Information Save As" onclick="saveAs();"/>

 </li>

 </ul>

 <div id="footer">

 <p> 

 NCC V1.01 beta Power By BlueDestiny, never-online

 <br/> 

 More code please visit <a href="http://www.never-online.net" target="_blank" title="visit my site">http://www.never-online.net</a> 

 </p>

 </div>

 </td>

 <td align="left" valign="top" id="right">

 <fieldset>

 <legend>- Output Information -</legend>

 <textarea id="outputWrapper" style="border:0; background-color:buttonface; width:96%; height:100%;"></textarea>

 </fieldset>

 </td>

 </tr>

 </table>

 </fieldset>

</body>

</html>

本文由 华域联盟 原创撰写:华域联盟 » NCC Tools(never code counter tools) V1.0.1发布代码-代码统计工具

转载请保留出处和原文链接:https://www.cnhackhy.com/13978.htm

本文来自网络,不代表华域联盟立场,转载请注明出处。

作者: sterben

发表评论

联系我们

联系我们

2551209778

在线咨询: QQ交谈

邮箱: admin@cnhackhy.com

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部