【发布时间】:2012-07-09 15:10:06
【问题描述】:
我想在 Eclipse 中定义和触发一些自定义的 Java 编译错误。 基本上我希望某些方法中的某些系统调用触发编译错误。
在this discussion 中提出了一个基于注释 的解决方案,但它不适合我的情况,因为我无法预测何时会发生编译错误。我想要的是,当开发人员进行系统调用时,例如会触发编译错误。
【问题讨论】:
标签: java eclipse compiler-errors
我想在 Eclipse 中定义和触发一些自定义的 Java 编译错误。 基本上我希望某些方法中的某些系统调用触发编译错误。
在this discussion 中提出了一个基于注释 的解决方案,但它不适合我的情况,因为我无法预测何时会发生编译错误。我想要的是,当开发人员进行系统调用时,例如会触发编译错误。
【问题讨论】:
标签: java eclipse compiler-errors
不完全符合您的要求,但请考虑使用自定义 Checkstyle 定义。以下是 checkstyle 文档中的一个示例,它将对 System.out.println 的调用标记为无效:
<module name="Regexp">
<!-- . matches any character, so we need to escape it and use \. to match dots. -->
<property name="format" value="System\.out\.println"/>
<property name="illegalPattern" value="true"/>
</module>
【讨论】:
完成类似任务的唯一方法是为 Eclipse 编写一个插件,在构建期间分析代码。但是这样做的细节确实超出了 StackOverflow 问题的范围。
【讨论】:
您需要创建 Builder 实现并将其注册到 Java 项目。
你可以start here。
【讨论】:
例如,如果您想阻止开发人员使用 java.lang.System,一个不错的技巧是在您的项目中创建一个自定义类 java.lang.System,这样每次调用任何方法java.lang.System的(真正的)会出现编译问题。
如果您使用 maven,您还可以在单独的 maven 项目中创建该类,并提供不与实际应用程序打包的范围。
【讨论】: