Monday, September 27, 2004

DrJava 的 Interactions Pane 很好玩

DrJava - http://drjava.sourceforge.net/

一個小型的 Java IDE,有個很棒的功能 - Interactions Pane

例如依序輸入下面三行

import javax.swing.*;
JFrame frame = new JFrame("My JFrame");
frame.setVisible(true);

在第三行輸入完按 Enter 後就會有個 JFrame 出現 Figure 1

然後加入一個 JLabel

frame.getContentPane().add(new JLabel("DrJava Test"));
frame.pack();

Figure 2

把 JLabel 拿掉

frame.getContentPane().removeAll();
frame.pack();

Figure 3

如果沒有加分號,會把那行的東西印出來,像是接著只打 frame 按 Enter,會印出前面宣告的 JFrame 的資料

Figure 4

它還有提供一個 Eclipse Plugin,功能是可以在 Eclipse 裡使用 Interactions Pane

目前的 0.9.5 版有點小問題,解開壓縮檔之後要先編輯它的 plugin.xml 檔案

把這幾行

<requires>
<import plugin="org.eclipse.core.resources"/>
<import plugin="org.eclipse.ui"/>
<import plugin="org.eclipse.debug.ui"/>
<import plugin="org.eclipse.jdt.ui"/>
<import plugin="org.eclipse.jdt.core"/>
<import plugin="org.eclipse.console.ui"/>
</requires>

改成

<requires>
<import plugin="org.eclipse.core.resources"/>
<import plugin="org.eclipse.ui"/>
<import plugin="org.eclipse.debug.ui"/>
<import plugin="org.eclipse.jdt.ui"/>
<import plugin="org.eclipse.jdt.core"/>
<import plugin="org.eclipse.ui.console"/>
<import plugin="org.eclipse.core.runtime.compatibility"/>
<import plugin="org.eclipse.search"/>
</requires>

才不會開 DrJava 的 perspective 時出錯

(如果改完還看不到可以開的 perspective 裡有 DrJava,用 -clean 參數重新啟動 Eclipse)


  • 留言者: Duncan
  • Email:
  • 網址:
  • 日期: 2004-10-20 11:36:29

請問妳知道要怎麼在 interactive pane 裡面 list 已定義(assigned)的變數嗎?我看 help 也沒提到這點。


在 rebind 變數的時候,似乎不能 re-assign 不同 type 的 reference/value 給以定義過的變數,在無法列出已定義的變數環境下還得記憶變數的 type 實在有點累人。


另外在 interactive 環境裡直接 assign reference 給莫名的變數,也違反了 Java 的 OO model,會讓新手誤以為有 global variable 的存在,雖可以想像成有個 InetractiveConsole class 存在,而在 interactive pane 輸入的碼當作 class initializer 的內容,變數則是 static field,但是這也會造成新手感覺到 static field 可以動態增加的錯覺。








  • 留言者: JiaYun
  • Email:
  • 網址:
  • 日期: 2004-10-20 22:14:33

好像沒辦法列出已定義的變數,文件裡也沒寫....

Tuesday, September 7, 2004

EMMA - opensource 的 Java code coverage 工具

EMMA - http://emma.sourceforge.net/

第一次知道 code coverage 這詞好像是因為看到一些 project 使用 Clover

不過 Clover 不是免費的,所以沒有仔細看或抓來試玩

只得到一個印象:可以用來知道 JUnit 寫的之類的測試程式,測試到了主要程式的多少部份

現在知道有個 opensource 的 EMMA, 看了它的 Quick Start 發現還可以配合這工具執行 GUI 程式

把程式的功能試一試之後,會產生記錄顯示剛才的操作(手動測試?)執行到多少部份的程式碼

有點意外可以這樣玩 :P

取得測試程式的測試涵蓋範圍的方法,則在 Sample Reports 的第一項 Velocity 有個簡單的執行步驟

詳細還是要看 Documentation,只是不知道我什麼時候才會用到

第一次和到目前唯一一次有寫 test,是暑假前那學期做的一個作業

寫的東西太少了,而且有時都暴力去做,懶得弄測試 :P

最後,

技術人部落有一篇 EMMA 的文章 - http://203.204.88.244/post/1/16

Wednesday, September 1, 2004

FindBugs - 偵測程式碼裡的潛在問題

http://findbugs.sourceforge.net/

可以找出程式碼裡可能存在的 這麼多問題

而且有多種使用方式:文字模式、GUI 模式、Ant task、Eclipse plug-in 等等

寫了一堆好文章的 Brian Goetz 在 Kill bugs dead 這篇文章裡

摘要出他以前文章談到的 Java 程式問題,然後說明 FindBugs 對這些問題的偵測

文章裡有那些舊文章的連結,還有 Chris Grindstaff 的兩篇 FindBugs 文章連結

這裡就不列出來了


  • 留言者: jason
  • Email: sadf@a.com
  • 網址: http://zion.matrix.realworld
  • 日期: 2005-03-13 22:37:14
Before you endeavor to use the diagnosing tool, you may write a clever code instead. There's an article talking about this - http://www.onjava.com/lpt/a/5513





  • 留言者: JiaYun
  • Email:
  • 網址:
  • 日期: 2005-03-16 15:00:06

已列入待讀文章 謝謝


(要讀的東西太多了 Orz) :P