Checkstyle - src-folder的Import-Control规则

时间:2013-12-19 15:47:44

标签: java checkstyle

如何创建ImportControl模块,该模块不允许在多个src文件夹中导入某些已定义的类? - 类在自己的项目中定义,但不允许在生产代码中使用,在其他单元测试中也是如此。

这甚至可能吗?首先我定义了一个模块:

<module name="ImportControl">
  <property name="severity" value="error"/>
  <property name="file" value="${config_loc}/import_control.xml"/>
</module>

现在我需要一个像这样的控件导入器:

<!DOCTYPE import-control PUBLIC "-//Puppy Crawl//DTD Import Control 1.1//EN"
    "http://www.puppycrawl.com/dtds/import_control_1_1.dtd">
<import-control pkg=toset>
    ...
</import-control>

我的第一种方法是在正则表达式的帮助下设置不允许的标记,以便无法导入所选文件。问题是我无法将pkg定义为“src”。

有没有办法只使用import-control.xml来处理这个问题?

1 个答案:

答案 0 :(得分:0)

我担心使用ImportControl是不可能的。

原因是您可以在import-control.xml中指定的任何内容引用包,但不引用源文件夹或项目。 Checkstyle不知道源文件夹或项目,因为它与IDE无关,而且这些是Eclipse构造。 import-control.xml也不能引用绝对文件名,因为Checkstyle不知道引用类的绝对文件名。

解决此问题的一种方法是选择禁用的包,以便它们都包含一个公共组件(如com.foo.FORBIDDEN.pkg)。然后你可以禁止使用这样标记的包。

此外,您可以编写自己的Eclipse感知Checkstyle检查。我曾经做过一次,并且成功了,但我可以告诉你,即使你知道自己在做什么,也要做好几天的工作。