2012-11-12 43 views
2

我的目標是擴展eclipse QuickFix組件並自動化解決語法錯誤的過程。基本上,QuickFix組件提供了一個解決方案列表,我的任務是選擇最好的修補程序並將其應用於錯誤代碼。但是,現在我已經被要求在控制檯上打印標記的分辨率。我試圖制定一個教程,我現在有點卡住了。我試着鍛鍊的教程:http://www.informit.com/articles/article.aspx?p=370625&seqNum=21 我首先增加了擴展我的plugin.xml文件從Eclipse插件寫入stdout

<extension point="org.eclipse.ui.ide.markerResolution"> 
    <markerResolutionGenerator 
     markerType="org.eclipse.core.resources.problemmarker" 
     class="org.eclipse.escript.quickfix.QuickFixer"/> 
</extension> 

然後我創建了兩個類QuickFixer和QuickFix的。

package quickfixer; 

import org.eclipse.core.resources.IMarker; 
import org.eclipse.core.runtime.CoreException; 
import org.eclipse.ui.IMarkerResolution; 
import org.eclipse.ui.IMarkerResolutionGenerator; 

class QuickFixer implements IMarkerResolutionGenerator { 

    public IMarkerResolution[] getResolutions(IMarker arg0) { 
    try { 
      Object problem = arg0.getAttribute("Whatsup"); 
      return new IMarkerResolution[] { 
      new QuickFix("Fix #1 for "+problem), 
      new QuickFix("Fix #2 for "+problem), 
      }; 
     } catch(CoreException e) { 
      return new IMarkerResolution[0]; 
     } 
    } 
} 

那麼類的QuickFix:

package quickfixer; 

import org.eclipse.core.resources.IMarker; 
import org.eclipse.jface.dialogs.MessageDialog; 
import org.eclipse.ui.IMarkerResolution; 

public class QuickFix implements IMarkerResolution { 

     String label; 
     QuickFix(String label) { 
      this.label = label; 
     } 
     public String getLabel() { 
      return label; 
     } 

    public void run(IMarker arg0) { 
     MessageDialog.openInformation(null, "QuickFix Demo", 
        "This quick-fix is not yet implemented"); 
     System.out.println("Label: " + label);    
    } 
} 

我已經成功地糾正我遇到的所有錯誤,然後我已運行該插件。 我一直沒有能夠獲得在控制檯打印出的標籤。任何建議??? ...

+2

我建議改寫你的問題的標題。它與QuickFix沒有任何關係,只是在Eclipse中使用stdout。 – ShiDoiSi

+0

你是如何運行插件的? – ShiDoiSi

回答

2

使用System.out不是一個好主意。檢查爲什麼

你應該避免使用標準輸出或標準錯誤在你 插件

,並使用正確的日誌記錄(或調試器)的relevant FAQ

+0

正如我在開始時所說的,我的目標是自動化quickFix組件。但是現在我試圖在一個錯誤的程序中「捕捉」一個錯誤,然後當quickFix彈出時,我得到捕捉分辨率並打印它在控制檯上...... Sooo我認爲它與QuickFix相關,因爲我不僅在控制檯中進行打印,還必須先獲取標記,然後再獲取捕獲標記的分辨率。 –

+0

@DaroRoyoss您是否在調試器中驗證過您實際達到'println'語句? – ShiDoiSi

+1

我曾試過,但我一直未能。現在,讓我們省略控制檯部分中的打印。當我運行該程序並嘗試使用QuickFix組件來修復錯誤時,我不會收到消息對話框,它應該通知用戶該快速尚未實現..如果我管理得到這部分權利,然後我會試着找出一種方法來獲得在控制檯打印出來的分辨率...所以你能幫我在這裏嗎? –