统计代码的小工具CodeLineCounter2.2

CodeLineCounter 2.2 note.

1 一句话介绍

源代码统计工具,支持基于Spring的配置以及提供了一些扩展点使得用户可以方便的扩展。
同时可以生成各种各样的报表。


2 如何使用

保证path中有java命令。
修改itemConfig.xml,重新配置dirConfigItemCollection里面的DirConfigItem,只有itemId和baseDir是必填的。
运行start.bat。


3 系统设计及扩展

系统按照以下阶段执行。
阶段1 筛选需要统计的文件      阶段2 统计文件的行数       阶段3 生成各式报告

接收文件用
public interface CodeFileFilter {
	public boolean filterFile(File file);
}

来判断。系统提供了一些Filter,用户也可以提供新的实现。如果用户没有配置Filter,则使用默认的Filter。

PostfixIncludeFilter: 默认的Filter,现在可以处理后缀名为bat,c,cs,java,sql,xml的文件。
AndFilter: 多个Filter的逻辑与Filter。
BypassFilter:处理所有文件的Filter。
DirDenyFilter:拒绝目录Filter,拒绝指定目录。
DirStringDenyFilter:拒绝路径包含指定字符串的目录。
FileModifyTimeFilter:最后修改时间Filter,只接受指定天数内修改过的File。
NotFilter: 一个Filter的反向Filter。
OrFilter: 多个Filter的逻辑或Filter。


统计行数用
public interface CodeFileParser {
	public ResultItem parse(File file);
}

定义。ResultItem中包含文件名和行数,空行数,注释行数。系统提供了一些parser,用户也可以提供新的实现。
如果用户没有配置Parser,则使用默认的Parser。

PostfixParser: 默认的parser,根据文件后缀名的不同选择不同的Parser。现在可以处理后缀名为bat,c,cs,java,sql,xml的文件。
BatParser:统计bat文件。
CParser:统计c文件。
CSharpParser:统计c#文件。
JavaParser:统计java文件。
SqlParser:统计sql文件。
TextParser:统计纯文本文件。
XmlParser:统计xml文件。


一次检查结果可以使用多种形式报告,报告用
public interface Reporter {
	public void report(DirConfigItem dirConfigItem, Set<ResultItem> resultSet);
}

定义。报告可以是任何形式,系统提供了一些Reporter,用户也可以提供新的实现。
如果用户没有配置Reporter,则使用默认的Reporters。默认用PostfixHtmlReporter和PackageHtmlReporter。

PackageHtmlReporter:按照层级统计,可以配置层级的深度,默认值为2,输出html。
PostfixHtmlReporter:基于后缀的统计,输出html。
PostfixConsoleReporter: 基于后缀的统计,在控制台输出。
SimpleHtmlReporter:所有文件的统计,输出html。
SimpleConsoleReporter: 所有文件的统计,在控制台输出。


4 配置

logconfig.xml 日志配置文件。

itemConfig.xml 检查项配置文件。

在item.xml里面配置Filter,Parser,Reporter。如果不配置则使用默认配置。
DirConfigItem代表一个检查项。它的配置如下:
itemId:生成html的文件名。
baseDir:检查的根目录。
一个filter来filter要检查的文件,如果不配置使用默认配置。
一个Parser来分析文件,如果不配置使用默认配置。
一个Reporter列表来报告检查结果,如果不配置使用默认配置。

DirConfigItemCollection可以包含多个DirConfigItem。

5 如何扩展

用户可以自定义CodeFileFilter,CodeFileParser ,Reporter 来扩展系统的功能。通过修改itemConfig.xml可以简单的使用新定义的class。

你可能感兴趣的:(spring,sql,C++,c,xml)