当前位置: 首页 > news >正文

轻量级架构决策记录工具 - ADR Tools

ADR Tools - 架构决策记录工具

项目描述

ADR Tools 是一个轻量级的命令行工具,专门用于管理项目的架构决策记录(Architecture Decision Records, ADRs)。该项目采用Unix shell脚本实现,支持跨平台使用,能够帮助开发团队系统化地记录和追踪重要的架构决策过程。

功能特性

  • 简单的命令行接口:提供统一的adr命令,支持多种子命令操作
  • Markdown格式支持:决策记录采用标准Markdown格式,便于阅读和版本控制
  • 决策关联管理:支持创建新决策并标记其与旧决策的替代关系
  • 跨平台兼容:支持Linux、MacOS X和Windows(通过Git Bash或Linux子系统)
  • 自动编号和日期管理:自动为决策记录生成编号和ISO 8601格式日期
  • 可配置性:支持通过配置文件自定义行为

安装指南

Homebrew (MacOS X)

brew install adr-tools

ASDF-VM (Linux, MacOS X)

通过ASDF版本管理器安装:

asdf plugin-add adr-tools
asdf install adr-tools latest

从发布包安装

  1. 从发布页面下载zip或tar.gz包
  2. 解压包文件
  3. src/子目录添加到PATH环境变量中

从Git源码安装

git clone https://github.com/npryce/adr-tools.git
export PATH="$PATH:$(pwd)/adr-tools/src"

Windows 10

Git Bash方式

  1. 下载发布包并解压
  2. src/目录内容复制到C:\Program Files\Git\usr\bin
  3. 安装more命令或设置PAGER环境变量为less

Linux子系统方式

在Windows的Linux子系统中按照"从发布包安装"的步骤操作。

使用说明

初始化ADR目录

adr init doc/architecture/decisions

这将在项目根目录创建ADR存储目录,并生成第一个决策记录。

创建新决策记录

adr new "Implement as Unix shell scripts"

创建新的决策记录并在编辑器中打开。

创建替代决策

adr new -s 9 "Use Rust for performance-critical functionality"

创建替代第9号决策的新决策记录。

获取帮助

adr help
adr help new  # 获取特定子命令的帮助

核心代码

决策记录模板

# NUMBER. TITLEDate: DATE## StatusSTATUS## Context## Decision
The change that we're proposing or have agreed to implement.## Consequences
What becomes easier or more difficult to do and any risks introduced by the change that will need to be mitigated.

配置管理脚本 (adr-config)

#!/bin/bash
# ADR Tools配置脚本
# 输出工具运行所需的配置信息echo "ADR_DATE=$(date +%Y-%m-%d)"
echo "ADR_DIR=${ADR_DIR:-doc/adr}"
echo "EDITOR=${EDITOR:-vi}"

决策创建逻辑

#!/bin/bash
# adr-new脚本核心逻辑
# 创建新的架构决策记录generate_adr() {local number=$1local title=$2local date=$(date +%Y-%m-%d)cat > "$ADR_DIR/${number}-${title// /-}.md" << EOF
# ${number}. ${title}Date: ${date}## StatusProposed## Context$(get_context)## Decision$(get_decision)## Consequences$(get_consequences)
EOF
}

决策状态更新

#!/bin/bash
# 更新决策状态的函数
# 当新决策替代旧决策时自动更新状态update_status() {local old_adr=$1local new_adr=$2# 在旧决策中添加被替代标记sed -i.bak "/## Status/a\\
Superceded by [${new_adr}]" "$old_adr"# 在新决策中添加替代关系sed -i.bak "/## Context/a\\
Supercedes [${old_adr}]" "$new_adr"
}

该工具通过简单的shell脚本实现了完整的架构决策管理功能,具有良好的可扩展性和可维护性。
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
公众号二维码

http://www.hskmm.com/?act=detail&tid=16984

相关文章:

  • 一文搞懂Flex弹性布局空间分配规则
  • AT_agc012_c [AGC012C] Tautonym Puzzle 题目分析
  • 详细介绍:回调函数与错误处理
  • Django系列(七)HttpRequest(请求)和HttpResponse(响应)对象
  • 工业主板:智能制造与严苛环境的坚实基石
  • 课上测试:C编程工具测试(AI)
  • 标题。
  • 虚拟机下的麒麟V10SP1与SP2进行iSCSI连接——基于MobaXterm
  • 中断的基本概念
  • AT_arc173_e [ARC173E] Rearrange and Adjacent XOR
  • 修复gradle8使用Transform第一个构建中断第二次构建失败的问题:java.io.IOException: Unable to delete directory xxxx\build
  • .NET操作Word/WPS打造专业文档 - 页面设置与打印控制完全指南
  • NORDIC蓝牙6.0新品NRF54L15多协议超低功耗高性能BLE芯片 - 动能世纪
  • 记录:git、.${index}. 滚动条
  • 使用springboot开发一个宿舍管理系统练习项目 - 实践
  • 元组
  • CF1542
  • Manim实现涟漪扩散特效
  • CRMEB标准版PHP移动订单功能深度解析:多端同步方案
  • CICD流程建设之持续测试实践指南
  • Xcode 26.0.1 (17A400) 发布 - Apple 平台 IDE
  • Tenable Nessus 10.10 (macOS, Linux, Windows) - 漏洞评估解决方案
  • CNN+MNIST - 实践
  • SonarQube Server 2025 Release 5 (macOS, Linux, Windows) - 代码质量、安全与静态分析工具
  • 超快轻量级离线翻译服务器MTranServer在腾讯云轻量应用服务器上的全流程部署指南 - 实践
  • 微算法科技(NASDAQ: MLGO)利用高级 Blowfish 加密标准实现区块链集成信息共享
  • 专业讲解大模型登记(纯干货)
  • Docker常用命令速查
  • 离线安装docker
  • MX 练石 2025 NOIP #9