【问题标题】:Checkstyle - Import-Control rule for src-folderCheckstyle - src 文件夹的导入控制规则
【发布时间】:2013-12-19 15:47:44
【问题描述】:

如何创建一个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 来处理这个问题?

【问题讨论】:

    标签: java checkstyle


    【解决方案1】:

    恐怕使用 ImportControl 是不可能的。

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

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

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

    【讨论】:

      猜你喜欢
      • 2014-11-11
      • 2021-05-26
      • 1970-01-01
      • 2011-12-30
      • 1970-01-01
      • 2022-12-09
      • 1970-01-01
      • 2014-04-28
      • 2023-03-05
      相关资源
      最近更新 更多