去年为了公司的Junit需求做了一个检测我们的代码是否有Junit Test Class的一个小Tool, 今天又翻出来看了下,觉得里面的有个小功能可能对大家有用,如果你也觉得有用,我觉得很荣幸。:)
1.用途:
指定一个类, 分析出类中所有方法的精确位置- 也就是某个方法在哪两行之间。
(大家可以考虑一下怎么做,然后再看看我的方法是不是太笨了。-_-!!)
2.用法:
新建一个类,将这几行代码加到mail方法,例如:
示例使用代码
1 public static void main(String[] args) {
2 // CVSParseMethod
3 // C:/Documents and
4 // Settings/hut/workspace/junitcheck/src/branding/src/java/com/webex/webapp/branding/common/BrandingTools.java
5 CVSParseMethod x = new CVSParseMethod( " C:\\Documents and Settings\\hut\\workspace\\AccountMethodLocation\\ " ,
6 " net.blogjava.xmp123.CVSClass " );
7
8 // src/java/com/webex/webapp/urlapi/biz/URLAPIMgrImpl.java
9 // C:/Documents and Settings/hut/workspace/junitcheck/src/meetingcenter/src/java/com/webex/webapp/meetingcenter/action/common/QuickStartInviteAction.java
10 System.out.println(x.parseAction());
11 }
[补充]: CVSParseMethod的构造函数是CVSParseMethod(String String1,String String2), String1是目标的java文件在文件系统的位置,String2是类的全名..如net.blogjava.xmp123.CVSClass.
BTW:不要忘记将后面download的jar导过来。
结果会打在Console里,象这样:
Loading net.blogjava.xmp123.CVSClass
Loaded net.blogjava.xmp123.CVSClass
Found java source file in C:\Documents and Settings\hut\workspace\AccountMethodLocation / net / blogjava / xmp123 / CVSClass.java
Parsing net.blogjava.xmp123.CVSClass
Parsed a common class and brackets can matched the methods correctly
MethodParseEngine have searched 10 methods(Including constructors).
Completed :Spend 0.187 seconds to parse this file.
[ public CVSClass(String) locate between 52 and 123
, public CVSMethod[] getCvsMethodArray() locate between 128 and 130
, public CVSConstructor[] getCvsConstructorArray() locate between 135 and 137
, public Set getMethodSet() locate between 142 and 144
, public Set getConstructorSet() locate between 149 and 151
, public String getClasspath() locate between 156 and 158
, public List getMethodList() locate between 163 and 165
, public String getClassName() locate between 174 and 176
, public boolean equals(Object) locate between 183 and 188
, public int hashCode() locate between 193 and 196
]
3. 我是怎么做的。
.用java反射拿出所有的的类的构造函数和方法。
.读java源文件,通过匹配左右括号来匹配方法并记录出合适的位置。
4. 存在的问题:
到目前为止,这个小程序至少不能分析它自己的主类:CVSParseMethod(很多Exceptions), 因为这个类里面定义的一些String中含用 { }而导致匹配的时候出错。呵呵。但是我保证,它应该在>90%的概率下正常工作。:)
5. 下载的地址:
http://www.blogjava.net/Files/xmp123/CountMethodLocation.zip
查看本文来源