2013-06-22 58 views
0

在我的javadoc註釋,我經常把@throws意見例外的子類,如:解決方法爲「allowThrowsTagsForSubclasses」的問題在Eclipse中的Checkstyle插件

/** 
* My method. 
* @throws SubclassOfMyException when something specific happens 
* @throws MyException if any other error occurs 
*/ 
public void myMethod() throws MyException { 
    // ... 
} 

Checkstyle的應該是處理這種格式在設置allowThrowsTagsForSubclasses Javadoc方法模塊。但是,Eclipse Checkstyle插件經常(但並非總是)將這種情況標記爲錯誤。從命令行運行checkstyle不會將這些標記爲錯誤。我正在使用插件版本5.6.0.201209221626.

任何解決方法的建議?也許我可以改變我的文檔樣式?

回答

2

讓我添加一些注意事項。設置RedundantThrows以允許子類在我的書中沒有問題。我甚至將允許申報以及運行時異常:

<module name="RedundantThrows"> 
    <property name="allowUnchecked" value="true"/> 
    <property name="allowSubclasses" value="true"/> 
</module> 

無論哪種方式,你應該能夠通過配置JavadocMethod檢查,以滿足您的原始方案。確保allowUndeclaredRTE(它允許運行時異常出現在Javadoc @throws標記中,而未在方法簽名中聲明)和allowThrowsTagsForSubclasses設置爲true(您已經提到後者)。

除了這些,還有logLoadErrors,這可能會導致Checkstyle警告,如「無法獲取課程信息」如果無法加載有問題的異常。如果無法解決類路徑問題(我不建議使用這種解決方法,但它存在),則可能需要將其關閉。例如:

<module name="JavadocMethod"> 
    <property name="allowUndeclaredRTE" value="true"/> 
    <property name="allowThrowsTagsForSubclasses" value="true"/> 
    <property name="logLoadErrors" value="false"/> 
</module> 

Eclipse的插件的Checkstyle這樣是相當可靠的,雖然我已經使用了很多年但從未表現出任何嚴重的故障(缺少的功能是一個不同的故事)。所以上面的配置真的應該工作。如果你之後仍然有問題,那麼它與Checkstyle沒有任何直接關係,而是與Eclipse或你的使用(比如你的類路徑是如何構建的,如果你有自定義的構建器,如果你讓非-Eclipse程序寫入工作區等等;超出了這個問題的範圍)。

0

你可以讓子類中的Checkstyle拋出:

<module name="RedundantThrows"> 
     <property name="allowSubclasses" value="true"/> 
    </module> 

,改變你的方法簽名:

public void myMethod() throws SubclassOfMyException, MyException { 

有些人可能會認爲這是不好的代碼風格,雖然。