栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Checkstyle规则,用于限制根软件包之间的交互(使用ImportControl?)

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Checkstyle规则,用于限制根软件包之间的交互(使用ImportControl?)

不幸的是,要使用开箱即用的importControl复选框很难做到。
原因如下:

您已经发现了为什么选项1无法使用的原因:只能有一个根软件包。

选项2是可行的,但很费力。让我深入一点。我使用了以下两个导入控制文件,它们不允许使用

models
from
views
views
from
models

<!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="views">    <allow pkg="views" />    <disallow pkg="models" /></import-control><!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="models">    <allow pkg="models" />    <disallow pkg="views" /></import-control>

在我的测试设置中,这基本上可以工作,但是有一个缺点:每个类都会收到Checkstyle警告,表明 import控制文件无法处理此包
。这是因为importControl检查期望所有程序包都驻留在公共根目录下(通过查看Checkstyle
5.6源进行了验证)。因此,在

models
程序包中,您会从为
views
程序包配置的检查实例中得到警告,反之亦然。
还存在一个额外的问题,即importControl检查仅适用于import语句,但是找不到直接在代码中使用的完全限定的引用。

所以,你可以做什么?

  • 更改您的应用程序,以便拥有共同的根。这是最佳做法,通常是个好主意。
  • 实现自定义检查作为其子类,
    importControlCheck
    该子类添加用于启用/禁用 “导入控制文件无法处理此程序包” 消息的选项,否则请使用选项2。
  • 如果使用的是Eclipse,则还有第三个解决方案。您可以使用Checkstyle Eclipse插件提供的高级配置对话框,以将importControl实例限制为各自的文件。这也将消除 “导入控制文件无法处理此程序包” 消息。


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/574642.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号