去年为了公司的Junit需求做了一个检测我们的代码是否有Junit Test Class的一个小Tool 今天又翻出来看了下觉得里面的有个小功能可能对大家有用如果你也觉得有用我觉得很荣幸:)
用途
指定一个类 分析出类中所有方法的精确位置 也就是某个方法在哪两行之间
(大家可以考虑一下怎么做然后再看看我的方法是不是太笨了_!!)
用法
新建一个类将这几行代码加到mail方法例如
示例使用代码
public static void main(String[]args) {
// CVSParseMethod
// C:/Documentsand
// Settings/hut/workspace/junitcheck/src/branding/src/java/com/webex/webapp/branding/common/BrandingToolsjava
CVSParseMethodx = new CVSParseMethod( C:\\DocumentsandSettings\\hut\\workspace\\AccountMethodLocation\\
netblogjavaxmpCVSClass );
// src/java/com/webex/webapp/urlapi/biz/URLAPIMgrImpljava
// C:/DocumentsandSettings/hut/workspace/junitcheck/src/meetingcenter/src/java/com/webex/webapp/meetingcenter/action/common/QuickStartInviteActionjava
Systemoutprintln(xparseAction());
}
[补充]: CVSParseMethod的构造函数是CVSParseMethod(String StringString String) String是目标的java文件在文件系统的位置String是类的全名如netblogjavaxmpCVSClass
BTW:不要忘记将后面download的jar导过来
结果会打在Console里象这样
LoadingnetblogjavaxmpCVSClass
LoadednetblogjavaxmpCVSClass
FoundjavasourcefileinC:\DocumentsandSettings\hut\workspace\AccountMethodLocation / net / blogjava / xmp / CVSClassjava
ParsingnetblogjavaxmpCVSClass
Parsedacommon class andbracketscanmatchedthemethodscorrectly
MethodParseEnginehavesearched methods(Includingconstructors)
Completed:Spend secondstoparse this file
[ public CVSClass(String)locatebetween and
public CVSMethod[]getCvsMethodArray()locatebetween and
public CVSConstructor[]getCvsConstructorArray()locatebetween and
public SetgetMethodSet()locatebetween and
public SetgetConstructorSet()locatebetween and
public StringgetClasspath()locatebetween and
public ListgetMethodList()locatebetween and
public StringgetClassName()locatebetween and
public boolean equals(Object)locatebetween and
public int hashCode()locatebetween and
]
我是怎么做的
用java反射拿出所有的的类的构造函数和方法
读java源文件通过匹配左右括号来匹配方法并记录出合适的位置
存在的问题
到目前为止这个小程序至少不能分析它自己的主类CVSParseMethod(很多Exceptions) 因为这个类里面定义的一些String中含用 { }而导致匹配的时候出错呵呵但是我保证它应该在>%的概率下正常工作:)
下载的地址