# archguard **Repository Path**: amtech/archguard ## Basic Information - **Project Name**: archguard - **Description**: ArchGuard 是一个架构治理工具,用于管理和分析组织级别的软件架构。 结合 C4 模型,进行依赖分析,含容器级别(服务级别)、组件级别(/模块级别)、代码级别、数据库级别等。 同时,可以创建系统的架构适应度函数,度量系统的各项指标。 - **Primary Language**: Kotlin - **License**: MIT - **Default Branch**: master - **Homepage**: https://archguard.org/ - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 25 - **Created**: 2024-04-25 - **Last Updated**: 2024-04-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ArchGuard backend [![CI](https://github.com/archguard/archguard/actions/workflows/ci.yaml/badge.svg)](https://github.com/archguard/archguard/actions/workflows/ci.yaml) [![codecov](https://codecov.io/gh/archguard/archguard/branch/master/graph/badge.svg?token=QS5H866CWH)](https://codecov.io/gh/archguard/archguard) [![GitHub release](https://img.shields.io/github/v/release/archguard/archguard?logo=git&logoColor=white)](https://github.com/archguard/archguard/releases) [![languages](https://img.shields.io/badge/language-kotlin-blueviolet?logo=kotlin&logoColor=white)](https://www.kotlincn.net/) [![Java support](https://img.shields.io/badge/Java-12+-green?logo=java&logoColor=white)](https://openjdk.java.net/) [![License](https://img.shields.io/github/license/archguard/archguard?color=4D7A97&logo=opensourceinitiative&logoColor=white)](https://opensource.org/licenses/MIT) [![Gitpod Ready-to-Code](https://img.shields.io/badge/Gitpod-ready--to--code-green?label=gitpod&logo=gitpod&logoColor=white)](https://gitpod.io/#https://github.com/archguard/archguard) ![Maven Central](https://img.shields.io/maven-central/v/org.archguard.scanner/scanner_core) > ArchGuard is an architecture governance tool that can analysis architecture in container, component, code level, database, create architecture fitness functions, and test for architecture rules. Chinese: ArchGuard 是一个针对于微服务(分布式场景)下的架构工作台/治理工具。它可以帮助架构师、开发人员进行架构自助,自定义架构的洞察、 分析系统间的远程服务依赖情况、数据库依赖、API 依赖等。并根据一些架构治理模型,对现有系统提出改进建议。 - Document: [https://archguard.org/](https://archguard.org/) - Roadmap: [Roadmap](https://github.com/archguard/archguard/discussions/5) - Contribute: [Contribute to Archguard](https://archguard.org/contribution) - SubProjects: - [ArchGuard Frontend](https://github.com/archguard/archguard-frontend) - [Chapi](https://github.com/modernizing/chapi) source code analysis - [ArchGuard Co-mate](https://github.com/unit-mesh/co-mate) an AI-powered architecture copilot, design and governance tools. - Architecture: ![Architecture](https://archguard.org/architecture.svg) 特性(Features): - **设计态** - 架构设计、分析与治理 DSL - Feakin: [https://github.com/feakin/fklang](https://github.com/feakin/fklang) - **开发态** - 架构扫描 - 扫描配置 - 插件化规则定制 - 规则化治理:Code Smell, Test Code Smell, SQL Smell, API Smell, Documentation Smell, etc. - 架构可视化 - 基于 C4 模型的可视化分析 - 上下文:API 服务地图(API 生产者支持语言:Java、Kotlin、C#,API 消费者支持语言:TypeScript/JavaScript、Kotlin、Java 等) - 容器分析。数据库地图(支持 MyBatis、JDBI、JPA) - 组件分析 - 代码分析:支持级别模块、包、类、方法四个级别。 - 高级分析 + 可视化 - 系统不稳定性模块分析。 - 容器间:精准测试/变化分析 - 架构指标(单体DONE,分布式DOING) - 体量维度:过大的组件 - 耦合维度:枢纽组件,过深调用,循环依赖 - 内聚维度:霰弹式修改 - 冗余维度:冗余元素,过度泛化 - 质量维度:测试保护 - 代码分析 - CLOCO:代码复杂度 [#79](https://github.com/archguard/archguard/issues/79) - SCA 分析 - OpenAPI 分析 - Architecture analysis - **运行态** - APM(TODO) - **架构工作台** Features: - **Design State** - Architecture Design, Analysis and Governance DSL - Feakin: [https://github.com/feakin/fklang](https://github.com/feakin/fklang) - **Development state** - Schema scan - Scan configuration - Plug-in rule customization - Rule-based governance: Code Smell, Test Code Smell, SQL Smell, API Smell, Documentation Smell, etc. - Architecture visualization - Visual analysis based on C4 model - Context: API service map (API producer supported languages: Java, Kotlin, C#, API consumer supported languages: TypeScript/JavaScript, Kotlin, Java, etc.) - Container analysis. Database map (support MyBatis, JDBI, JPA) - Component analysis - Code analysis: supports four levels of modules, packages, classes, and methods. - Advanced Analysis + Visualization - System instability module analysis. - Between containers: precise testing/variation analysis - Architecture metrics (single DONE, distributed DOING) - Volume dimension: oversize components - Coupling dimension: hub components, too deep calls, circular dependencies - Cohesive Dimension: Shotgun Modification - Redundant dimensions: redundant elements, overgeneralization - Quality dimension: test protection - Continuous Integration - External analysis - CLOCO: Code Complexity [#79](https://github.com/archguard/archguard/issues/79) - SCA analysis - OpenAPI analysis - Architecture analysis - **Running state** - APM (TODO) - **Architecture Workbench** Screenshots:
1 2
3 4
Languages parse by [Chapi](https://github.com/modernizing/chapi) | Features/Languages | Java | Python | Go | Kotlin | TypeScript | C | C# | Scala | C++ | |---------------------|------|--------|----|--------|------------|----|----|-------|-----| | http api decl | ✅ | 🆕 | 🆕 | ✅ | ✅ | 🆕 | ✅ | 🆕 | 🆕 | | syntax parse | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | 🆕 | | function call | ✅ | 🆕 | ✅ | ✅ | ✅ | | | | | | arch/package | ✅ | | | ✅ | ✅ | 🆕 | ✅ | ✅ | | | real world validate | ✅ | | | | ✅ | | | | | ## Custom Backend case example: - [https://github.com/unit-mesh/co-unit](https://github.com/unit-mesh/co-unit) by Rust language use [Scanner CLI](./scanner_cli) you can customize your backend. For more detail, see in: [ArchGuardHttpClient](scanner_cli/src/main/kotlin/org/archguard/scanner/ctl/client/ArchGuardHttpClient.kt) HTTP examples: ```http request POST http://127.0.0.1:8765/scanner/:systemId/reporting/class-items POST http://127.0.0.1:8765/scanner/:systemId/reporting/openapi POST http://127.0.0.1:8765/scanner/:systemId/reporting/container-services POST http://127.0.0.1:8765/scanner/:systemId/reporting/datamap-relations ... ``` ### Chat 关注我们: wechat 欢迎加入我们: wechat (PS:如果群满,请添加微信 `phodal02`,并注明 ArchGuard) ## Thanks JetBrains support: ![JetBrains Logo (Main) logo](https://resources.jetbrains.com/storage/products/company/brand/logos/jb_beam.svg) License --- This code is distributed under the MIT license. See `LICENSE` in this directory.