Shamash 是一个 JVM 架构执行工具,可帮助团队定义、验证和持续执行架构边界。 它通过及早发现禁止的依赖项和循环来防止 JVM 代码库中的架构漂移。
- 阻止层违规(控制器 → 存储库,服务 → Web 等)
- 检测依赖循环并显示代表性的循环路径
- 在重构/迁移期间捕获模块边界中断
- 为 CI/PR 可见性生成 SARIF/HTML/JSON/XML 报告
- PSI(来源):仪表板、抑制、引导式修复
- ASM(字节码):确定性的“发布内容”验证 + CI 门禁 + 导出
- 下载
- 工具 → Shamash ASM 仪表板
- 创建 ASM 配置(从参考)
- 构建 (./gradlew assemble)
- 运行 ASM 扫描 → 结果 + 导出在 .shamash/ 中
当您需要感知源代码的反馈时,请使用 PSI(IDE 原生仪表板、抑制、引导式修复)。 当您需要构建工件的真实信息时,请使用 ASM(字节码级别的真实性、JAR 可见性、CI 友好的扫描)。
大多数团队同时运行两者:
- PSI 用于日常开发反馈
- ASM 用于“实际发布的内容”的字节码验证
- ASM 读取 asm.yml
- PSI 读取 psi.yml
这些 YAML 配置文件定义了角色、规则、范围、验证行为、导出,以及(启用时)分析输出,如图形/热点/分数。
显示详情
- 角色(例如,控制器/服务/存储库)和放置规则
- 禁止的依赖关系(角色 → 角色,包 → 包,模块 → 模块)
- 依赖循环(带有代表性的循环路径)
- 使用清晰的、路径感知的错误进行配置验证
- 依赖/调用图分析(可配置粒度)
- 热点和评分(架构健康指标)
- 可导出的报告(JSON / SARIF / HTML / XML)
- 死代码检测
- 弃用/影子使用检测
- 额外的 JVM 内部可见性和高级检查
文档 + 测试平台应用程序: ./docs/
看: Quick Start — Gradle Kotlin DSL
# one-time: generate the starter config in shamash/configs/asm.yml
gradlew shamashInit
# validate config
gradlew shamashValidate
# run scan gate (also runs on ./gradlew check now)
gradlew shamashScan
gradlew check
