MyEclipse常用插件使用教程

一、Findbugs

1. 配置

1.1 打開FindBugs視圖:

Windows => Show View => Other… => FindBugs => Bug Info 、Bug Explorer、Bug Reviews

1.2 配置FindBugs

選擇你的項目=>右鍵 => Properties => FindBugs => 選中“Run automatically” => OK

Findbugs各項屬性的配置說明:

Enable project specific setting:該項目是否啓用自身特殊設置(忽略全局設置)

Run automnaticaly:編譯文件時自動運行。

Also on full build:編譯工程時自動運行。必須同時勾選Enable project specific setting

Bug類型說明:

Minimum priority to report:根據bug的優先權級別報告bug。

Malicious code vulnerability:惡意代碼。

Dodgy code:高危代碼。FindBugs團隊認爲該類型下的問題代碼導致bug的可能性很高。

Bad practice:最佳實踐反例。這種類別下的代碼違反了公認的最佳實踐標準,比如某個類實現了equals方法但未實現hashCode方法等。

Correctness:正確性。這種歸類下的問題在某種情況下會導致bug,比如錯誤的強制類型轉換等。

Internationalization:國際化。

Performance:性能。潛在性能問題

Security:安全。

Mutithreaded correctness:多線程的正確性。關注於同步和多線程問題。

1.3 Bug設置

2. 使用

2.1 如下圖:我們在工程的右鍵菜單中選擇Find bugs的菜單項“Find bugs”。

2.2 當findBugs運行後,就可以在bug Explorer 視圖中看到相應的信息,可以雙擊切換到相應代碼 ,就可以對這個代碼改進了,如下圖:

這時我們就可以找到BUG所在並修改

2.3 查看Bug詳細信息

顯示詳細信息如下:

2.4 過濾bug設置:

2.4.1 首先點擊bug行號前的bug標誌,進入bug detail視圖,記下這個bug的id,如下圖的[RCN]

2.4.2 在Bug Explorer窗口中單擊“Filter Bugs by Id“

輸入Type(RCN)或Pattern(RCN_REDUNDANT_NULLCHECK_WOULD_HAVE_BEEN_A_NPE)即可找出相應的bug設置

ok確認即可。

2.5 分組查看

選擇相應的分組依據

或者直接如下圖所示分組。

二、Checkstyle

1. 配置

當Checkstyle成功安裝後,在"window->Preferences"中可以看到checkstyle的選項, 如圖所示:

Checkstyle有兩個渠道可以進行配置,一個是全局的,一個是單個項目(Project)的。全局的可以 在整個MyEclipse的workspace中生效, 而單個項目的配置可以在指定的項目中生效,它優先於全局 的配置。

對於單個項目:右鍵點某個項目,然後選擇"Properties"就可以看到Checkstyle的窗口。在"Main"標籤中,"Checkstyle active for this project"前面打勾, 然後在"Simple –use the following check configuration for all files" 下拉框中選擇你的Checkstyle配置文件就可以了。如圖:

對於全局的設置:"window->preferences"就可以看到。設置方法跟單個項目的設置是一樣的。

經過上面的設置,Checkstyle就可以使用了。Checkstyle默認提供了基於Sun的檢查配置文件,並不一定適合每個公司,因此提供了自定義檢查模式。在全局設置中"Global Check Configurations"中單擊"New"按鈕。

起好名字後,單擊"Import"按鈕,選擇文件後,確定即可。

另外,官方幫助可以在MyEclipse的"Help-> HelpeContents"中的" Checkstyle Plug-in " 中找到。內容還是很詳盡的。

2. 使用

很簡單,在項目設置中勾選Checkstyle active for this project後,重新編譯即可。或者右擊項目"Checkstyle -> Check Code with Checkstyle"。

三、JDepend

1. 使用

運行方法是右鍵選擇需要分析的包,選擇 Run JDepend Analysis

於是會出現如下分析結果

2. 說明

JDepend爲每個Package自動生成的依賴性度量指標,包括:

Number of Classes and Interfaces(CC):實現類與抽象接口的數目

面向的設計原則之一The Stable Abstractions Principle (SAP):穩定抽象等價原則指出了包的穩定程度與它的抽象程度(接口的數目)成正比,也就是說,一個包內包含的接口所佔的比重越大,這個包就越穩定。

Afferent Couplings (Ca):向心耦合。依賴該包(包含的類)的外部包(類)的數目(i.e. incoming dependencies),該數值越大,說明該包的擔當的職責越大,也就越穩定。

Efferent Couplings (Ce):離心耦合。被該包依賴的外部包的數目(i.e. outgoing dependencies),該數值越大,說明該包越不獨立(因爲依賴了別的包),也越不穩定。
Abstractness (A):包的抽象度。指一個包內包含的抽象類或接口占整個包中的類的比重。該值處於0,1之間,若A=0,說明包內不包含任何抽象類或接口;若A=1,說明包內全部是抽象類或接口。包的抽象度與穩定性之間的關係上面已經作了說明。

Instability (I):衡量一個包的不穩定程度。I=Ce/(Ce+Ca)。它的值處於[0,1]之間。I=0時說明包是最穩定的,反之I=1則說明包極不穩定。

Distance from the Main Sequence (D): 該指標主要用來評價包的抽象程度與穩定程度的平衡關係,它可以用二維直線圖 A + I = 1 來表示。D=abs((A + I) - 1),也就是說D爲 一個包的抽象度 + 包的不穩定程度 - 1 的絕對值。一個理想的包是:完全抽象的(A=1),非常穩定的(I=0),這時D=0;或者是:完全具體類構成的包(A=0),非常不穩定的 (I=1),這時同樣也有D=0。D=0說明包的抽象程度與穩定程度是平衡的,反之D=1說明包的平衡程度被嚴重破壞。

Package Dependency Cycles:包的循環依賴度。

面向對象的設計原則之一:The Acyclic Dependencies Principle (ADP) - OO設計的無環依賴原則要求包之間不能有循環依賴關係。

四、Eclemma

1. 配置

如果EclEmma只能測試Java Application的測試覆蓋率,那麼它相對命令行版本的Emma來說,提供的增強就不多了。相反,EclEmma提供了很多與MyEclipse緊密結合的功能。它不僅能測試Java Application,還能計算JUnit單元測試,對MyEclipse插件測試的覆蓋率。從圖中我們可以看到EclEmma目前支持幾種類型的程序。

打開EclEmma運行命令按鈕

工具欄右鍵->Customize Perspective

選擇Command Groups Availability->勾選Java Code Coverage->Ok

之後在工具欄就會出現按鈕

2. 使用

首先建立一個 HelloWorld 類,其代碼如下所示:

  1. package cn.itkt.hotel;
  2. public class HelloWorld {
  3. public staticvoid main(String[] args) {
  4. int rand = (int) (Math.random() *100);
  5. if (rand % 2 == 0) {
  6. System.out.println("Hello, world! 0");
  7. } else
  8. System.out.println("Hello, world! 1");
  9. int result = rand % 2 ==0 ? rand + rand : rand * rand;
  10. System.out.println(result);
  11. }
  12. }
package cn.itkt.hotel;

public class HelloWorld {
	
	public static void main(String[] args) {
		int rand = (int) (Math.random() * 100);
		if (rand % 2 == 0) {
			System.out.println("Hello, world! 0");
		} else
			System.out.println("Hello, world! 1");

		int result = rand % 2 == 0 ? rand + rand : rand * rand;
		System.out.println(result);
	}
}

接下來,我們通過 EclEmma 運行 HelloWorld.main() 函數。

執行完畢之後,我們正在編輯 HelloWorld.java 的窗口將會變成如下所示:

在Java編輯器中,EclEmma用不同的色彩標示了源代碼的測試情況。其中,綠色的行表示該行代碼被完整的執行,紅色部分表示該行代碼根本沒有被執行,而黃色的行表明該行代碼部分被執行。黃色的行通常出現在單行代碼包含分支的情況,例如上圖 中16行就顯示爲黃色。由於程序中有一個隨機確定的分支,因此讀者的窗口可能與這裏稍有不同(11行或者14 行中有且只有一個紅色的行)。

除了在源代碼編輯窗口直接進行着色之外,EclEmma 還提供了一個單獨的視圖來統計程序的覆蓋測試率。

EclEmma提供的Coverage視圖能夠分層的顯示代碼的覆蓋測試率,上圖中的信息表明我們對HelloWorld的一次運行覆蓋了大約68.6%的代碼。

想在一次運行中覆蓋所有的代碼通常比較困難,如果能把多次測試的覆蓋數據綜合起來進行察看,那麼我們就能更方便的掌握多次測試的測試效果。EclEmma提供了這樣的功能。現在,讓我們重複數次對HelloWorld的覆蓋測試。我們注意到Coverage視圖總是顯示最新完成的一次覆蓋測試。事實上,EclEmma爲我們保存了所有的測試結果。接下來,我們將通過 Coverage視圖的工具按鈕來結合多次覆蓋測試的結果。

當我們多次運行 Coverage 之後,我們可以單擊圖中所示工具欄按鈕。之後,一個對話框將被彈出以供用戶選擇需要合併的覆蓋測試。

在合併完成之後,我們可以觀察到 Java 編輯器和 Coverage 視圖中都顯示了合併之後的結果:

圖中,我們可以看到,通過多次運行覆蓋測試,最終我們的代碼達到了91.4%的測試覆蓋率。有趣的是,圖中第三行代碼被標記爲紅色,而此行代碼實際上是不可執行的。奧妙在於,我們沒有生成任何HelloWorld類的實例,因此缺省構造函數沒有被調用,而EclEmma將這個特殊代碼的覆蓋狀態標記在類聲明的第一行。

五、Eclipse Class Decompiler

1. 配置

找到MyEclipse->Window->Preferences->Java->反編譯器

上圖爲Eclipse Class Decompiler的首選項頁面,可以選擇缺省的反編譯器工具,並進行反編譯器的基本設置。缺省的反編譯工具爲JD-Core,JD-Core更爲先進一些,支持泛型、Enum、註解等JDK1.5以後纔有的新語法。

首選項配置選項:

1.1 重用緩存代碼:只會反編譯一次,以後每次打開該類文件,都顯示的是緩存的反編譯代碼。

1.2 忽略已存在的源代碼:若未選中,則查看Class文件是否已綁定了Java源代碼,如果已綁定,則顯示Java源代碼,如果未綁定,則反編譯Class文件。若選中此項,則忽略已綁定的Java源代碼,顯示反編譯結果。

1.3 顯示反編譯器報告:顯示反編譯器反編譯後生成的數據報告及異常信息。

1.4 使用MyEclipse代碼格式化工具:使用Eclipse格式化工具對反編譯結果重新格式化排版,反編譯整個Jar包時,此操作會消耗一些時間。

1.5 使用MyEclipse成員排序:使用Eclipse成員排序對反編譯結果重新格式化排版,反編譯整個Jar包時,此操作會消耗大量時間。

1.6 以註釋方式輸出原始行號信息:如果Class文件包含原始行號信息,則會將行號信息以註釋的方式打印到反編譯結果中。

1.7 根據行號對齊源代碼以便於調試:若選中該項,插件會採用AST工具分析反編譯結果,並根據行號信息調整代碼順序,以便於Debug過程中的單步跟蹤調試。

1.8 設置類反編譯查看器作爲缺省的類文件編輯器:默認爲選中,將忽略MyEclipse自帶的Class Viewer,每次MyEclipse啓動後,默認使用本插件提供的類查看器打開Class文件。

配置完後檢查class文件默認打開方式,MyEclipse->Window->Preferences->General->Editors->File Associations

我們可以看到class文件的打開方式有兩個,類反編譯查看器和MyEclipse自帶的Class File Viewer,而類反編譯查看器是默認的才行。

2. 使用

插件提供了系統菜單,工具欄,當打開了插件提供的類反編譯查看器後,會激活菜單和工具欄選項,可以方便的進行首選項配置,切換反編譯工具重新反編譯,以及導出反編譯結果。

類反編譯查看器右鍵菜單包含了MyEclipse自帶類查看器右鍵菜單的全部選項,並增加了一個“導出反編譯源代碼”菜單項。

打開項目路徑下的Class文件,如果設置類反編譯查看器爲缺省的查看器,直接雙擊Class文件即可,如果沒有設置爲缺省查看器,可以使用右鍵菜單進行查看。

Eclipse Class Decompiler插件也提供了反編譯整個Jar文件或者Java包的反編譯。該操作支持Package Explorer對包顯示佈局的操作,如果是平鋪模式佈局,則導出的源代碼不包含子包,如果是層級模式佈局,則導出選中的包及其所有的子包。

注意:包的“平鋪模式佈局”和“層級模式佈局”的設置

Debug調試:可以在首選項選中對齊行號進行單步跟蹤調試,和普通的包含源代碼時的調試操作完全一致,同樣的也可以設置斷點進行跟蹤。

注意:首選項選擇“根據對齊行號進行單步跟蹤調試”後,必須重新反編譯class文件才行,否則還是原來事先編譯好的代碼,會導致跟蹤調試失敗。重新編譯的方法:1:上面圖中菜單欄。2:上面圖中類打開方式。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章