面对实际交付,我看go-cleanarch的重点不在星标,而在这项能力:Go 的简洁架构验证器,例如 Go 项目中包之间的依赖关系规则和交互。实际做日常自动化时,经常会碰到输入边界、依赖和失败处理如果不清楚就很难稳定复用,所以功能列表并不能代替验证。我建议用一项范围明确的真实任务完成最小试跑,重点记录配置时间、输出质量、异常信息和维护痕迹,再与现有方案比较。整体来看,它适合愿意先做小范围验证并复查原始文档的团队拿来做对照测试,最终决定仍应回到真实结果和维护状态。

Golang 的清洁架构检查器
go-cleanarch was created to keep Clean Architecture rules, 就像 Go 项目中的“依赖关系规则”和“模块之间的交互”。 有关更多信息,您应该阅读 我们关于清洁架构的文章。
使用清洁架构的一些好处:
- 独立于框架。该架构不依赖于某些功能丰富的软件库的存在。这允许您使用此类框架作为工具,而不必将您的系统塞入其有限的约束中。 2.可测试。无需 UI、数据库、Web 服务器或任何其他外部元素即可测试业务规则。
- 独立于UI。 UI 可以轻松更改,而无需更改系统的其余部分。例如,Web UI 可以替换为控制台 UI,而无需更改业务规则。
- 独立于数据库。您可以将 Oracle 或 SQL 服务器替换为 Mongo、BigTable、CouchDB 或其他服务器。您的业务规则不绑定到数据库。
- 独立于任何外部机构。事实上,您的业务规则根本不了解外部世界的任何情况。
来源:清洁架构
项目架构要求
go-cleanarch assumes this files structure:
[GOPATH]/[PACKAGE_NAME]/[LAYER_NAME]
或
[GOPATH]/[PACKAGE_NAME]/[MODULE_NAME]/[LAYER_NAME]
例如
允许 LAYER_NAME :
默认图层名称如下。可以设置不同的名称 通过命令行参数查看-domain/-application/-interfaces/-infrastructure 吼叫。
var LayersAliases = map[string]Layer{
// Domain
"domain": LayerDomain,
"entities": LayerDomain,
// Application
"app": LayerApplication,
"application": LayerApplication,
"usecases": LayerApplication,
"usecase": LayerApplication,
"use_cases": LayerApplication,
// Interfaces
"interfaces": LayerInterfaces,
"interface": LayerInterfaces,
"adapters": LayerInterfaces,
"adapter": LayerInterfaces,
// Infrastructure
"infrastructure": LayerInfrastructure,
"infra": LayerInfrastructure,
}
示例请转到 示例 目录, with 包含有效和无效架构的示例。
有关更多信息,您应该阅读 我们关于清洁架构的文章。
安装中
go install github.com/roblaszczak/go-cleanarch@latest
go-cleanarch 仅在 Linux 上进行了测试,也应该适用于 OS X。 可能它在 Windows 上运行得不好.
跑步
在当前目录下运行:
go-cleanarch
在提供的目录中运行
go-cleanarch go/src/github.com/roblaszczak/awesome-cms
如果架构无效,进程将以代码 1 退出,否则将以 0 退出。
-忽略测试
如果需要忽略go-cleanarch检查中的*_test.go文件,可以通过-ignore-tests
go-cleanarch -ignore-tests
当您在基础设施层中有内存实现时,它很有用 并且您需要测试依赖于它的应用程序服务。
-忽略包
如果由于某种原因您需要允许禁止导入,例如
github.com/roblaszczak/go-cleanarch/examples/ignore-package/app 至 github.com/roblaszczak/go-cleanarch/examples/ignore-package/domain。
你可以使用
go-cleanarch -ignore-package=github.com/roblaszczak/go-cleanarch/examples/ignore-package/app
图层名称
可以使用以下参数将图层名称设置为特定值。每个 参数代表在层上。
go-cleanarch -domain dom -application appli -interfaces int -infrastructure outer
这只允许域名为 dom,应用程序必须为 appli, 接口必须是内部的,而基础设施必须是外部的。
运行测试
make test
和编码风格测试
make qa
版本控制
我们使用 SemVer 进行版本控制。有关可用版本,请参阅此存储库 上的 [标签。