星期二, 九月 07, 2004
EMMA - opensource 的 Java code coverage 工具
EMMA - http://emma.sourceforge.net/
第一次知道 code coverage 這詞好像是因為看到一些 project 使用 Clover
不過 Clover 不是免費的,所以沒有仔細看或抓來試玩
只得到一個印象:可以用來知道 JUnit 寫的之類的測試程式,測試到了主要程式的多少部份
現在知道有個 opensource 的 EMMA, 看了它的 Quick Start 發現還可以配合這工具執行 GUI 程式
把程式的功能試一試之後,會產生記錄顯示剛才的操作(手動測試?)執行到多少部份的程式碼
有點意外可以這樣玩 ![]()
取得測試程式的測試涵蓋範圍的方法,則在 Sample Reports 的第一項 Velocity 有個簡單的執行步驟
詳細還是要看 Documentation,只是不知道我什麼時候才會用到
第一次和到目前唯一一次有寫 test,是暑假前那學期做的一個作業
寫的東西太少了,而且有時都暴力去做,懶得弄測試 ![]()
最後,
技術人部落有一篇 EMMA 的文章 - http://203.204.88.244/post/1/16
星期三, 九月 01, 2004
FindBugs - 偵測程式碼裡的潛在問題
http://findbugs.sourceforge.net/
可以找出程式碼裡可能存在的 這麼多問題
而且有多種使用方式:文字模式、GUI 模式、Ant task、Eclipse plug-in 等等
寫了一堆好文章的 Brian Goetz 在 Kill bugs dead 這篇文章裡
摘要出他以前文章談到的 Java 程式問題,然後說明 FindBugs 對這些問題的偵測
文章裡有那些舊文章的連結,還有
這裡就不列出來了
星期四, 八月 26, 2004
Subversion - 先 tag 或先 commit trunk
人多的 project 應該不太會要考慮這個,自己玩玩的小 project 比較會遇到
比如說現在 working copy 版本是 3
trunk 裡的東西修改一些後確定要成為 release 1.0
這時可以先 commit trunk,版本變成 4,再做 tag,版本變成 5
也可以先用 svn copy 把 trunk 複製到 working copy 的 tags/1.0 裡,再一起 commit,版本變成 4
看起來好像只有最後的版本號碼差一號
不過分別用 incremental 方式 dump 第一種的 -r 4:5,和第二種的 -r 4
會發現第一種的 dumpfile 對於 revision 4 部份記錄的是 trunk 在 3 之後的更動
revision 5 部份只記錄由 trunk 複製到 tags/1.0 該增加的頂層目錄,並標記由 revision 4 的 trunk 複製過來
而第二種則是對 trunk 的處理和第一種在 revision 4 部份的處理一樣
但對 tags/1.0 的處理是標記由 revision 3 的 trunk 複製,並記錄和 trunk 3 到 4 同樣的更動
也就是同樣的更動在 trunk 和 tags/1.0 被重複記錄了,如果 dump 的結果對應記錄的方式的話(我不確定)
如果真的是這樣,代表第一種省空間,第二種只是省個號碼
我是覺得只做 tag 就多個版本號碼有點多餘才試了第二種
但發現似乎有上面這種情形,所以又覺得還是都用第一種好 ![]()
JDK 5.0 的好玩工具
JDK 5.0 多了不少好玩的東西
像在 command line 下打 jps 會列出 Java 行程
12063 Jps
11862 Main
10739 jedit.jar
前面的數字是 process id (pid)
用 jinfo pid 可以列出該行程的一些 Java 設定資料
jmap -histo pid 顯示這樣的東西
Object Histogram:
Size Count Class description
-------------------------------------------------------
4018800 340 int[]
412632 4287 * ConstMethodKlass
242616 4287 * MethodKlass
221776 6147 * SymbolKlass
156056 301 * ConstantPoolKlass
110128 283 * ConstantPoolCacheKlass
107480 301 * InstanceKlassKlass
67440 312 byte[]
62504 572 char[]
32384 368 java.lang.Class
25888 436 short[]
分別是各類型物件所佔記憶體大小、數量、所屬 Class (int[] 佔那麼多是因為我宣告了一個大小一百萬的陣列)
jmap -heap pid 則會顯示 heap 的相關資料
詳細資料在 http://java.sun.com/j2se/1.5.0/docs/tooldocs/index.html
最底下的兩大類 Monitoring and Management Tools 和 Troubleshooting Tools
星期日, 八月 15, 2004
svndumpfilter
我要把自己機器上的 subversion repository 複製到別的機器
但只要複製其中一個的 project
svnadmin dump 是整個 repository 都 dump
不過配合 svndumpfilter 就可以產生出單一 project 的 dumpfile
svnadmin dump /path/to/repos | svndumpfilter include project --drop-empty-revs --renumber-revs > dumpfile
加上參數 --drop-empty-revs 可以捨棄那些只修改別的 project,和要複製的 project 無關的版本
用了 --drop-empty-revs 再加上 --renumber-revs 能讓版本號碼重新編排,產生連續的號碼
不會因為有捨棄的版本,而造成號碼跳動
在 Version Control with Subversion 的 svndumpfilter 那一節有詳細說明
http://svnbook.red-bean.com/svnbook/ch05s03.html#svn-ch-5-sect-3.1.3
星期三, 八月 11, 2004
Commons4E 1.0.0 released
http://commons4e.berlios.de/
標題很大,可是功能還很少
自己有了想法後,在做之前有先搜尋過,知道已經有一個 Commonclipse
不過覺得它少了讓使用者選擇 field 的功能(它直接用所有的 field 產生那些 method)
而選擇 field 是我有這個想法時覺得最重要的一點
雖然有想過加入 Commonclipse,可是因為自己傾向不要打開 donate 功能
所以就乾脆開一個新的 project
星期五, 七月 23, 2004
pLog 0.3.2
多了好多 template
所以我就給它換了一個 ![]()
還有最左下角放了個 Contact Me 連結,有我的 email address,有事可以寄信給我 ;)
CodeRuler - 在 Eclipse 上玩遊戲練 Java
IBM 的介紹文章: 簡體中文 英文
CodeRuler 下載
因為是以 plugin 方式整合進 Eclipse 所以要先有 Eclipse
雖然需求上是寫要 Eclipse 2.1.x 版,不過 3.0 上也可以正常使用
3.0 有可能遇到裝 plugin 卻沒效果的問題(聽說是為了提昇效能,省略了一些檢查,我用 Linux 版倒是沒遇到)
只要關掉 Eclipse 殺掉 configuration 裡的所有子目錄再重新啟動,或者裝完 plugin 後的第一次啟動加上參數 -clean 就可以了
另外,Eclipse 設定 Window > Preferences > Java > Installed JREs 裡,要將 1.4.2 版的 JDK 打勾,用 1.5 遊戲無法正常運作
星期日, 七月 04, 2004
subversion file:/// 真方便
如果只是自己在一台機器上使用 subversion
只要 svnadmin create path/to/repos 開好 repository
就可以在 client 直接以 file:///path/to/repos 的 URL 存取
不用架 server
星期六, 六月 26, 2004
gaim 0.79
gaim 0.79 有兩樣期待已久的 MSN 的功能
可以顯示別人的大頭圖(好像還不能設定自己的)
可以傳檔案給別人(但不能接收的樣子)
今天(2004.7.10)發現可以收檔的,不過好像對方第二次傳,才彈出要不要收檔的通知
