去年為了公司的Junit需求做了一個檢測我們的代碼是否有Junit Test Class的一個小Tool 今天又翻出來看了下覺得裡面的有個小功能可能對大家有用如果你也覺得有用我覺得很榮幸:)
用途
指定一個類 分析出類中所有方法的精確位置 也就是某個方法在哪兩行之間
(大家可以考慮一下怎麼做然後再看看我的方法是不是太笨了_!!)
用法
新建一個類將這幾行代碼加到mail方法例如
示例使用代碼
public static void main(String[] args)
{
// CVSParseMethod
// C:/Documents and
// Settings/hut/workspace/junitcheck/src/branding/src/java/com/webex/webapp/branding/common/BrandingTools
java
CVSParseMethod x = new CVSParseMethod(
C:\\Documents and Settings\\hut\\workspace\\AccountMethodLocation\\
net
blogjava
xmp
CVSClass
);
// src/java/com/webex/webapp/urlapi/biz/URLAPIMgrImpl
java
// C:/Documents and Settings/hut/workspace/junitcheck/src/meetingcenter/src/java/com/webex/webapp/meetingcenter/action/common/QuickStartInviteAction
java
System
out
println(x
parseAction());
}
[補充]: CVSParseMethod的構造函數是CVSParseMethod(String StringString String) String是目標的java文件在文件系統的位置String是類的全名如netblogjavaxmpCVSClass
BTW:不要忘記將後面download的jar導過來
結果會打在Console裡象這樣
Loading net
blogjava
xmp
CVSClass
Loaded net
blogjava
xmp
CVSClass
Found java source file in C:\Documents and Settings\hut\workspace\AccountMethodLocation / net / blogjava / xmp
/ CVSClass
java
Parsing net
blogjava
xmp
CVSClass
Parsed a common class and brackets can matched the methods correctly
MethodParseEngine have searched
methods(Including constructors)
Completed :Spend
seconds to parse this file
[ public CVSClass(String) locate between
and
public CVSMethod[] getCvsMethodArray() locate between
and
public CVSConstructor[] getCvsConstructorArray() locate between
and
public Set getMethodSet() locate between
and
public Set getConstructorSet() locate between
and
public String getClasspath() locate between
and
public List getMethodList() locate between
and
public String getClassName() locate between
and
public boolean equals(Object) locate between
and
public int hashCode() locate between
and
]
我是怎麼做的
用java反射拿出所有的的類的構造函數和方法
讀java源文件
通過匹配左右括號來匹配方法並記錄出合適的位置
存在的問題
到目前為止
這個小程序至少不能分析它自己的主類
CVSParseMethod(很多Exceptions)
因為這個類裡面定義的一些String中含用 { }而導致匹配的時候出錯
呵呵
但是我保證
它應該在>
%的概率下正常工作
:)
下載的地址
From:http://tw.wingwit.com/Article/program/Java/ky/201311/28166.html