python依赖项检查工具

dep-check的Python项目详细描述


DEP检查

imageCircleCI

dep check是一个python依赖关系检查器。它允许您编写规则来定义每个模块可以导入的内容,dep check然后可以分析项目中的每个源文件,以验证一切正常。还可以使用它为项目绘制依赖关系图。

graph_example

免费软件:麻省理工学院许可证

支持的语言

默认情况下,该工具假定它在python项目上运行。

安装

要安装dep check,请运行以下命令:

pip install dep-check

这是安装dep check的首选方法 安装最新的稳定版本。

如果您没有安装pip,这个Python installation guide可以指导您完成整个过程。

你还可以看到other installation methods

用法

构建配置文件

dep_check build <ROOT_DIR> [-o config.yaml][--lang LANG]
ArgumentDescriptionOptionalDefault
ROOT_DIRThe project root directory, containing the source files:x:N/A
-o / --outputThe output file (yaml format):heavy_check_mark:dependency_config.yaml
--langThe language the project is written in:heavy_check_mark:python

此命令列出yaml文件中每个模块的导入。使用此文件作为起点,使用通配符在哪个模块上编写可以导入内容的依赖关系规则。

下面是添加到初始yaml文件的附加规则的示例:

---dependency_rules:'*':-dep_check.models-dep_check.dependency_finder-dep_check.checkerdep_check.infra.io:-dep_check.use_cases%-jinja2-yamldep_check.infra.std_lib_filter:-dep_check.use_cases.interfacesdep_check.use_cases%:-dep_check.use_cases.app_configuration-dep_check.use_cases.interfacesdep_check.main:-'*'lang:pythonlocal_init:false
  • 使用*可以包含任何字符串,甚至是空字符串。
  • 在模块名之后使用%(例如my_module%)来包括这个模块及其子模块。

例如,在这里,配置文件定义dep_check.infra.io可以导入dep_check.use_cases,以及dep_check.use_cases.builddep_check.use_cases.check,等等。

要查看所有支持的通配符,请检查User Manual

检查配置

配置文件准备好后,运行

dep_check check <ROOT_DIR> [-c config.yaml][--lang LANG]
ArgumentDescriptionOptionalDefault
ROOT_DIRThe project root directory, containing the source files:x:N/A
-c / --configThe yaml file in which you wrote the dependency rules:heavy_check_mark:dependency_config.yaml
--langThe language the project is written in:heavy_check_mark:python

该命令读取配置文件,并解析每个源文件。然后,它验证每个文件的每个import是否由配置文件中定义的规则授权。

完成后,它会在控制台上编写报告,按模块列出导入错误和未使用的规则:

report

绘制依赖关系图

运行此命令需要安装graphviz

dep_check graph <ROOT_DIR> [-o file.svg/dot][-c config.yaml][--lang LANG]
ArgumentDescriptionOptionalDefault
ROOT_DIRThe project root directory, containing the source files:x:N/A
-o / --outputThe output file you want (svg or dot format):heavy_check_mark:dependency_graph.svg
-c / --configThe graph configuration file containing options (yaml format):heavy_check_mark:None
--langThe language the project is written in:heavy_check_mark:python

注意:如果生成svg文件,则在/tmp/graph.dot

有很多选项可用于自定义图形(隐藏某些模块、添加层等)。查看User Manual了解更多信息。

贡献

如果你想做出贡献,一定要遵循Contribution guide

学分

这个包是用Cookiecutteraudreyr/cookiecutter-pypackage项目模板

作者和贡献者

查看此项目的所有Authors and contributors

更改日志

1.0.3(2019-08-26)

错误修复

  • 该工具现在可以与go一起正常工作。

1.0.0(2019-08-20)

修改

  • 该工具现在编写完整的报告,显示错误、警告和文件的数量。
  • 命令已被简化,以避免命令行过长

添加了

  • 该工具现在支持go语言
  • 更好的文档

0.2.0(2019-07-16)

添加了

  • 现在可以将图层添加到图形中。
  • 如果不使用配置文件中的规则,该工具现在会发出警告。

0.1.0(2019-07-09)

  • pypi上的第一个版本。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
在java中,如何使用lambda表达式按月计算排名?   java如何更改createTempFile中的默认名称?   java无法找到或加载主类net。Fabrimc。德夫朗。主织物   java如何将应用程序绑定到端口161?   使用Spring Boot运行基于Flyway Java的回调   java如何将源代码库添加到IntelliJ(例如来自Github)?   用于MacOSX上应用程序打包的DMG后台java自定义下拉图标   Java泛型和返回类型   java Docker volume mapping+windows=难以置信的慢?   java gwt gxt文本字段。强制无效   试图使用Map<Class,Function<T,R>>替换Java8中的instanceOf,无法放入映射   java Spring SpEL错误   java如何格式化输出值?   java异步HTTP请求,排队请求   带有Kafka、ClassCastException的java Avro模式?   io我们是否需要在java中为Windows和linux提供单独的文件路径   哈姆克雷斯特爪哇。util。IllegalFormatFlagsException:标志=“”   java组合框所选项目   java如何停止程序以等待用户操作?