统计代码的小工具CodeLineCounter2.0

最新版本
[url]http://zhang-xzhi-xjtu.iteye.com/blog/474702[/url]

CodeLineCounter2.0 note.

version 2.0
作者: zhang_xzhi
email: zhang_zhi@163.com
blog: [url]http://zhang-xzhi-xjtu.iteye.com[/url]

1 一句话介绍
源代码统计工具,支持基于Spring的配置以及提供了一些扩展点使得用户可以方便的扩展。

2 系统设计及扩展
系统按照以下阶段执行。
阶段1 接收文件 阶段2 统计行数 阶段3 生成报告

接收文件用
public interface CodeFileFilter {
public boolean filterFile(File file);
}
来判断。系统提供了一些Filter,用户也可以提供新的实现。如果用户没有配置Filter,则使用默认的Filter。

DefaultFileter: 默认的Filter,永远处理File。
AndFilter: 多个Filter的逻辑与Filter。
OrFilter: 多个Filter的逻辑或Filter。
NotFilter: 一个Filter的反向Filter。
PostfixIncludeFilter: 后缀Filter,只接受指定后缀名的File。
FileModifyTimeFilter:最后修改时间Filter,只接受指定天数内修改过的File。
DirDenyFilter:拒绝目录Filter,拒绝指定目录。

统计行数用
public interface CodeFileParser {
public ResultItem parse(File file);
}
定义。ResultItem中包含文件名和行数。系统提供了一些parser,用户也可以提供新的实现。
如果用户没有配置Parser,则使用默认的Parser。

DefaultParser: 默认的parser,统计文件所有的行数。
CStyleParser:统计行数,但是不计空行,注释行。

一次检查结果可以使用多种形式报告,报告用
public interface Reporter {
public void report(Set<ResultItem> resultSet);
}
定义。报告可以是任何形式,系统提供了一些Reporter,用户也可以提供新的实现。
如果用户没有配置Reporter,则使用默认的Reporter。

DefaultReporter: 默认的Reporter,简单的在控制台打印检查结果。
PostfixReporter: 基于后缀的统计,基于后缀的统计。

3 配置
logconfig.xml 日志配置文件。
item.xml 检查项配置文件。
在item.xml里面配置Filter,Parser,Reporter。DirConfigItem代表一个检查项,一个检查项有一个根目录,
一个filter来filter要检查的文件,一个Parser来分析文件,一个Reporter列表来报告检查结果。
DirConfigItemCollection可以包含多个DirConfigItem。

4 例子

item.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>

<bean id="defaultReporter" class="allen.reporter.DefaultReporter">
</bean>
<bean id="postfixReporter" class="allen.reporter.PostfixReporter">
<property name="list">
<list>
<value>java</value>
<value>c</value>
<value>xml</value>
</list>
</property>
</bean>


<bean id="filter" class="allen.filter.PostfixIncludeFilter">
<property name="postfixList">
<list>
<value>.java</value>
<value>.c</value>
<value>.xml</value>
</list>
</property>
</bean>

<bean id="item1" class="allen.DirConfigItem">
<property name="baseDir"><value>F:\java_program</value></property>
<property name="filter"><ref bean="filter"/></property>
<property name="reporters">
<list>
<ref bean="defaultReporter" />
<ref bean="postfixReporter" />
</list>
</property>
</bean>

<bean id="item2" class="allen.DirConfigItem">
<property name="baseDir"><value>F:\c_program</value></property>
<property name="filter"><ref bean="filter"/>
</property>
</bean>


<bean id="dirConfigItemCollection" class="allen.DirConfigItemCollection">
<property name="list">
<list>
<ref bean="item1" />
<ref bean="item2" />
</list>
</property>
</bean>

</beans>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值