2013-06-22 60 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 { 

有些人可能会认为这是不好的代码风格,虽然。