繁体   English   中英

在Eclipse Checkstyle插件中解决“allowThrowsTagsForSubclasses”问题

[英]Workaround to “allowThrowsTagsForSubclasses” issue in Eclipse Checkstyle Plug-in

在我的javadoc注释中,我经常将@throws注释用于异常的子类,例如:

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

Checkstyle应该通过在Javadoc方法模块中设置allowThrowsTagsForSubclasses来处理这种格式。 但是,Eclipse Checkstyle插件经常(但并不总是)标记错误等情况。 从命令行运行checkstyle不会将这些标记为错误。 我正在使用插件版本5.6.0.201209221626。

有关解决方法的任何建议吗? 也许我可以改变我的文档风格?

我来补充几点。 在我的书中设置RedundantThrows以允许子类是可以的。 我甚至会允许声明运行时异常:

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

无论哪种方式,您都应该能够通过配置JavadocMethod检查来满足您的原始方案。 确保allowUndeclaredRTE (允许运行时异常出现在Javadoc @throws标记中而不在方法签名中声明)并且allowThrowsTagsForSubclasses设置为true (您已经提到allowThrowsTagsForSubclasses者)。

除此之外,还有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程序写的话)到工作区等等;超出这个问题的范围)。

您可以在Checkstyle中允许子类抛出:

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

并将您的方法签名更改为:

public void myMethod() throws SubclassOfMyException, MyException {

不过,有些人可能认为它的代码风格很糟糕。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM