惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
aimingoo的专栏
aimingoo的专栏
月光博客
月光博客
博客园 - Franky
Martin Fowler
Martin Fowler
U
Unit 42
阮一峰的网络日志
阮一峰的网络日志
Recent Announcements
Recent Announcements
The Cloudflare Blog
博客园 - 聂微东
酷 壳 – CoolShell
酷 壳 – CoolShell
宝玉的分享
宝玉的分享
J
Java Code Geeks
B
Blog RSS Feed
博客园 - 三生石上(FineUI控件)
MongoDB | Blog
MongoDB | Blog
腾讯CDC
博客园_首页
博客园 - 司徒正美
D
DataBreaches.Net
I
InfoQ
GbyAI
GbyAI
IT之家
IT之家
罗磊的独立博客

博客园 - 寒星

2010年度总结 Win7、Windows Server 2008下无法在Windows Service中打开一个已经存在的Excel 2007文件问题的解决方案 企业IT部门的职责和定位(转摘) 09年度总结 重读《软件架构师职业导读》有感 向给我留言的朋友道歉 B/S应用中的ActiveX数字签名相关问题杂谈 兑现承诺,给出我出的面试题。 年后第一天上班 提前给大家拜个早年。 闻听家乡出现流脑病例,祝福ing... 走近COM Interop--编程以实现COM-->Assembly 年终了,准备换换环境。 开心ing,终于买到回家的车票了。 老婆的第一次产前检查 Small Tip One: 根据指定的IIS虚拟路径获取相应的物理路径 《十种不宜追随的老板》一文读后感 十种不宜追随的老板[转] 回顾 2004
凑热闹,Share自己写的另一个小工具--代码统计器。
寒星 · 2004-12-22 · via 博客园 - 寒星

  看了边城浪子提供的代码统计工具,不禁让我想起了,今年夏天写的一个类似的小工具。当时,是应一个朋友的要求写的,后来被他用于象老板证明自己的工作量了,完全出乎我的意料
截图如下:
功能:
1.
 通过配置修改配置文件,可以提供一定程度上的扩展性。(稍后会给出相应的Xml文件说明)
2.
 支持将统计结果生成RTF文件和PDF文件。(因为当时时间的原因,未提供生成HTML的功能)
3.
 支持对整个目录进行统计,同样的,不支持对单个文件的统计。因为,个人认为,对单个文件是没有必要进行代码行数统计的。 缺陷:
1.
 因为当时写这个小工具时,是用VS.Net 2002,没有选择整个目录的控件,所以,自己写了一个,写得不是很好,可能会存在一些问题。
2.
 这个工具在转入选定目录结构和分析计算时,对多线程的支持不是太好,这和当然自己在这方面的能力不强有关系。
如果有时间,且这个工具的确有点作用的话,我会把考虑它重新完善一下的。

注:此工具的PDF生成功能依赖于ITextSharp开源组件。
下面,介绍一下配置文件的结构。
<Configurations>
  <Languages>
    <Language type="CSharp">
   <!--
文件类型(即扩展名列表) -->
      <FileType>cs;aspx.cs;asmx.cs</FileType>
      <WrapSign isCounted="1">;</WrapSign>
      <Signature pair="0">///</Signature>
      <Signature pair="1">/*|*/</Signature>
      <Signature pair="0">//</Signature>
    </Language>
    <Language type="Delphi">
      <FileType>pas</FileType>
      <Signature pair="0">//</Signature>
      <Signature pair="1">(*|*)</Signature>
    </Language>
    <Language type="VB">
      <FileType>frm;bas;ctl;cls</FileType>
      <WrapSign isCounted="0"> _</WrapSign>
      <Signature pair="0">'</Signature>
    </Language>
    <Language type="C">
      <FileType>c;h;cpp</FileType>
      <WrapSign isCounted="1">;</WrapSign>
      <Signature pair="0">//</Signature>
      <Signature pair="1">/*|*/</Signature>
    </Language>
    <Language type="Javascript">
      <FileType>js</FileType>
      <Signature pair="0">//</Signature>
      <Signature pair="1">/*|*/</Signature>
    </Language>
  </Languages>
  <UI>
    <Options>
      <OptionItem id="IsRecursive" desc="
是否递归目录">1</OptionItem>
      <OptionItem id="IsAutoExpandAllNodes" desc="
是否自动展开所有的节点">1</OptionItem>
    </Options>
  </UI>
</Configurations>
上面,是此工具依赖的配置文件Config.xml的结构。很明显,Language元素定义的是一种编程语言被解析时的相关信息。相信,大家都可以看得懂。如果需要让这个工具对一种新语言予以支持的话,只要加一个Language元素,同时定义相关子元素就可以了。请注意UI元素中的内容不要自行修改,因为它是由程序进行控制。当然,你真的要改,我也没有办法。 下载地址:download   (终于上传成功了。看来家里的网络有点儿问题。)