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

推荐订阅源

量子位
Stack Overflow Blog
Stack Overflow Blog
人人都是产品经理
人人都是产品经理
The GitHub Blog
The GitHub Blog
Engineering at Meta
Engineering at Meta
Vercel News
Vercel News
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Y
Y Combinator Blog
The Cloudflare Blog
Last Week in AI
Last Week in AI
B
Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
Tailwind CSS Blog
V
Visual Studio Blog
博客园 - 三生石上(FineUI控件)
小众软件
小众软件
Google DeepMind News
Google DeepMind News
D
DataBreaches.Net
博客园 - 司徒正美
B
Blog RSS Feed
Microsoft Azure Blog
Microsoft Azure Blog
罗磊的独立博客
Hugging Face - Blog
Hugging Face - Blog
L
LangChain Blog

博客园 - 寒星

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   (终于上传成功了。看来家里的网络有点儿问题。)