介绍Mimi:用于管理GO项目依赖关系的CLI工具
#go #cli

大家好,

在这篇文章中,我想介绍我开发的CLI工具,用于分析和控制GO项目中的直接和间接软件包依赖关系,并可视化这些依赖项。

我构建了什么

https://github.com/junyaU/mimi
随意恒星ð
顺便说一句,“ mimi”的名字取自我的宠物狗的名字ð¶。

您可以指定GO项目中的路径,并为可以直接和间接取决于它的软件包数量设置阈值。如果有超过依赖关系阈值的软件包,则该工具将输出软件包名称和超过阈值的依赖项数量。
您还可以以表格格式输出结果,或列出所有结果。

为什么我做到了

Go在开发项目时的性能和安全性都受到许多开发人员的喜爱。但是,随着项目越来越大(这不仅限于去),依赖关系往往变得更加复杂。

依赖项的增加可以降低代码的可读性和可维护性,并且在新开发人员加入项目时也可以成为障碍。为了避免这些问题,有必要在这些问题出现之前定期检查和管理项目中的依赖关系。但是,这可能是一项繁琐而复杂的任务。

因此,我决定创建mimi至:

  • 控制依赖的复杂性(我想在CI/CD中包括复杂性检查)
  • 清楚地显示直接和间接依赖之间的关系,以使管理更容易

特征

该工具的主要目标是协助管理GO项目中的依赖关系。具体来说,它量化了GO包的直接和间接依赖关系,并提供了列出它们的函数。

当前,可用以下命令:

  • 检查:检查给定软件包的直接和间接依赖性是否超过指定的阈值
  • 表:以表格格式显示给定GO包的直接和间接依赖关系
  • 列表:列表给定GO软件包的所有依赖项
  • 运行:读取yaml文件并执行其定义的命令

通过使用这些命令,您可以一目了然地掌握项目的依赖关系,并确定依赖关系变得复杂的领域。另外,通过为依赖项设置阈值,在依赖项超过阈值时会显示警告。

如何使用它

这是如何使用它的快速概述。有关更详细的说明,请查看README

首先,安装它:

$ go get -u github.com/junyaU/mimi
$ go install github.com/junyaU/mimi

这是命令的一些示例用途:

查看

检查指定的GO软件包的直接和间接依赖性是否超过了设置阈值。

$ mimi check <package_path> --direct=<direct_threshold> --indirect=<indirect_threshold> --depth=<depth_threshold>

Image description

桌子

以表格格式显示指定GO软件包的直接和间接依赖关系。超过阈值的软件包以红色显示。

$ mimi table <package_path> --direct=<direct_threshold> --indirect=<indirect_threshold> --depth=<depth_threshold>

Image description

列表

列出了指定的GO软件包的所有依赖项。

$ mimi list <package_path>

Image description

跑步

读取配置yaml文件并执行其定义的命令。

$ mimi run <config_file_path>

yaml

version: 1.0
commands:
  - name: check
    parameters:
      path: ./testdata/layer/domain/model
      directThreshold: 2
      indirectThreshold: 3
      depthThreshold: 3
  - name: check
    parameters:
      path: ./testdata/layer/domain/model/flow
      directThreshold: 5
      indirectThreshold: 2
  - name: table
    parameters:
      path: ./testdata/layer/domain/model
      directThreshold: 3
      indirectThreshold: 5
  - name: list
    parameters:
      path: ./testdata/layer/domain/model/flow

概括

我介绍了CLI工具“ Mimi”,该工具测量和管理GO套件依赖性。该工具仍处于开发的早期阶段,我还计划了更多功能。通过将MIMI集成到您的CI/CD流程中,您可以轻松地管理GO项目的复杂性并保持高质量的可管理代码。欢迎您的反馈和对项目的贡献,因为它们将有助于改善工具并使其对所有人更有用。

请访问该项目的GitHub存储库,如果发现有趣的话,请给它一个明星,并考虑贡献。我期待看到该项目如何通过您的支持和反馈演变。

感谢您抽出宝贵的时间了解咪咪,希望您发现它在Go Projects中有用!