layer linter检查项目是否遵循自定义的分层体系结构。
layer-linter的Python项目详细描述
层绒布
layer linter已被弃用,取而代之的是进口linter。
Import Linter做了linter层所做的一切,但是有更多的特性和稍微不同的api。 如果您已经在使用layer linter,那么迁移到import linter很简单:这里有一个指南here。
轮廓
layer linter检查项目是否遵循自定义的分层体系结构,基于 它的内部依赖关系(即模块之间的导入)。
- 免费软件:BSD许可证
- 文档:https://layer-linter.readthedocs.io。
概述
layer linter是一个命令行工具,用于检查您是否遵循了一个自定的 python项目中的体系结构。它通过分析内部 在代码库中的所有模块之间导入,并比较 反对在layers.yml文件中提供的一组简单规则。
例如,可以使用它来检查^{tt2}中没有模块$ 从myproject.bar内的任何模块导入,甚至是间接导入。
如果您在团队中处理复杂的代码库,这一点尤其有用, 当您想要强制执行特定的体系结构样式时。在这种情况下,您可以添加 将linter分层到部署管道,以便不遵循的任何代码 架构将无法通过测试。
快速启动
安装层绒布:
pip install layer-linter
决定要检查的依赖项流。在这个例子中,我们有 将我们的项目组织成三个子包,myproject.high,myproject.medium 和myproject.low。这些子包称为layers。注意:图层必须 具有相同的父包(即所有包都在同一目录中)。这个父容器称为container。
在项目的根目录中创建一个layers.yml。例如:
My Layers Contract: containers: - myproject layers: - high - medium - low
(这个契约告诉layer linter层的顺序从底部的low开始 到顶端的high。上层可以导入下层,但不是相反。)
注意,容器是python包的绝对名称,而层是相对于容器的。
现在,从项目根目录运行:
layer-lint myproject
如果您的代码违反了合同,您将看到如下错误消息:
============ Layer Linter ============ --------- Contracts --------- Analyzed 23 files, 44 dependencies. ----------------------------------- My layer contract BROKEN Contracts: 0 kept, 1 broken. ---------------- Broken contracts ---------------- My layer contract ----------------- 1. myproject.low.x imports myproject.high.y: myproject.low.x <- myproject.utils <- myproject.high.y
有关详细信息,请参见Usage。
历史记录
0.1.0(2018-06-20)
- pypi上的第一个版本。
0.2.0(2018-06-23)
- 在当前工作目录中查找layers.yml。
0.3.0(2018-06-24)
- 将命令重命名为layer-lint。
- 将layers.yml中的层的顺序从高级别更改为低级别。
0.4.0(2018-07-22)
- 使依赖性分析更加高效和健壮。
- 改进了报表格式。
- 删除了其他更简洁的非法依赖项所暗示的非法依赖项。
- 添加了--debug命令行参数。
0.5.0(2018-08-01)
- 添加了要报告的已分析文件和依赖项的计数。
- 修复了从在不同目录中运行命令到包的问题。
- 提高了分析速度。
- 已将--config_directory命令行参数更改为--config-directory。
0.6.0(2018-08-07)
- 增加了白名单路径的能力。
0.6.1(2018-08-07)
- 已将当前工作目录添加到路径。
0.6.2(2018-08-17)
- 不要分析不是python包的目录的子目录。
- 阻止安装不兼容的Pydeps版本(1.6)。
0.7.0(2018-09-04)
- 用t完成静态分析的重写o生成依赖关系图。
- 添加了安静和冗长的报告。
- 添加了类型注释和mypy。
- 使用pybackwards构建早期版本的python。
- 更正了引用layers.yml而不是layers.yaml的文档。
0.7.1(2018-09-04)
- 修正了0.7.0的打包错误。
0.7.2(2018-09-05)
- 修正了没有检查层的所有子模块的错误。
0.7.3(2018-09-07)
- 放弃了对Python3.4和3.5的支持,并调整了打包。
0.7.4(2018-09-20)
- 调整了命令行错误处理。
- 改进了自述文件和核心概念文档。
0.8.0(2018-09-29)
- 将--config-directory参数替换为--config参数,该参数将改为文件名。
0.9.0(2018-10-13)
- 移到测试版。
- 改进文件。
- 更好地处理传递到命令行的无效包名称。
0.10.0(2018-10-14)
- 在合同中将“packages”重命名为“containers”。
0.10.1(2018-10-14)
- 改进了对无效容器的处理。
0.10.2(2018-10-17)
- 层丢失时出错。
0.10.3(2018-11-2)
- 修复了pypi上的rst渲染。
0.11.0(2018-11-5)
- 支持定义可选层。
0.11.1(2019-1-16)
- 更新了依赖项,特别是切换到pyyaml的版本 地址https://nvd.nist.gov/vuln/detail/CVE-2017-18342。
0.12.0(2019-1-16)
- 修复了对init.py文件中相对导入的分析。
0.12.1(2019-2-2)
- 添加对Click 7.x的支持。
0.12.2(2019-3-20)
- 修复Windows文件路径的错误。
0.12.3(2019-6-8)
- 不建议使用层绒,改为进口绒。