Ka0s-Klaus/klaus-antipatterns-search

GitHub: Ka0s-Klaus/klaus-antipatterns-search

基于 Go 和 tree-sitter 的多语言代码反模式检测器,在本地、CI/CD 和组织级别统一识别技术债并生成标准化诊断报告。

Stars: 0 | Forks: 0

# 🔍 Klaus antipatterns 搜索 [![K*](https://img.shields.io/badge/K%2A-AI%20Workspace-7057ff)](https://github.com/Ka0s-Klaus) [![Go](https://img.shields.io/badge/Go-1.22+-00ADD8?logo=go)](https://go.dev) [![License](https://img.shields.io/badge/License-MIT-green)](LICENSE) [![Kanban](https://img.shields.io/badge/Kanban-%2321-blue)](https://github.com/orgs/Ka0s-Klaus/projects/21) ## 🤔 我做什么?我怎么做?我为什么这么做? ### 我做什么? 我是一个多语言的**代码反模式**检测器。我分析代码仓库——在本地、CI/CD 中或组织级别——并生成可执行的技术债务诊断:God Objects、过高的复杂度、重复代码、循环依赖、magic numbers 等。 ### 我怎么做? 我结合了两种互补的方法: 1. 基于 [`tree-sitter`](https://tree-sitter.github.io/tree-sitter/) 统一 AST 的**原生检测器**——使用单一分析引擎支持 ~40+ 种语言。 2. **OSS linters 适配器**(`jscpd`、`radon`、`gocyclo`、`madge` 等)——通过子进程编排,并在未安装时实现优雅降级。 所有的发现都会被标准化为统一的 `Finding` 模型,并以多种格式渲染。 ### 我为什么这么做? 因为在不同的组织(Ka0s-Klaus, mango, masorange)处理多个代码仓库时,如果没有统一的工具,技术债务就会悄无声息地累积。`Klaus-antipatterns-search` 为任何技术栈的代码健康状况提供了可重现且一致的可见性。 ## 🏗️ 架构 ``` graph TD CLI["🖥️ CLI / GitHub Action"] --> CORE["🎛️ Core Orchestrator"] CORE --> LANG["🔍 Language Detector"] LANG --> NATIVE["🌳 Native Detectors\n(tree-sitter)"] LANG --> ADAPTERS["🔌 OSS Adapters\n(jscpd · radon · gocyclo · madge)"] NATIVE --> MODEL["📦 model.Finding"] ADAPTERS --> MODEL MODEL --> REPORT["📊 Report Renderers"] REPORT --> CONSOLE["💻 Console + JSON"] REPORT --> MARKDOWN["📄 Markdown / HTML"] REPORT --> SARIF["🔐 SARIF\n(GitHub Code Scanning)"] SCAN["🌐 Multi-org Scanner"] --> CORE CONFIG["⚙️ .antipatterns.yml"] --> CORE ``` ## 🚀 运行模式 | 模式 | 命令 | 描述 | | --- | --- | --- | | 📁 **本地** | `antipatterns scan ./ruta` | 分析本地 repo | | 🔁 **CI/CD** | GitHub Action | 在 PR 中评论 + 上传 SARIF | | 🌐 **多组织** | `antipatterns scan-org ` | 扫描整个组织 | ## 🎯 检测到的反模式 (MVP) | 反模式 | 方法 | 来源 | | --- | --- | --- | | 🐘 God Object / God Class | 类指标 (LOC, 方法, fan-in/out) | 原生 (tree-sitter) | | 🌀 过高的复杂度 | 圈复杂度 / 认知复杂度 | OSS: `radon`, `gocyclo`, `eslint` | | 🔁 重复代码 | type-1/type-2 克隆检测 | OSS: `jscpd` | | 🔄 循环依赖 | imports 图 + 循环检测 | OSS: `madge`, `go list` | | 🔢 Magic numbers/strings | 常量外部的重复字面量 | 原生 | | 📏 巨型函数/文件 | 超过阈值的 LOC 和参数数量 | 原生 | | 💀 死代码 (lava flow) | 未被引用的符号 | OSS: `vulture`, `ts-prune` | | 📋 复制粘贴编程 | 按目录聚合重复项 | 衍生 | ## 📊 报告格式 - **终端** — 根据严重程度着色的表格 (info/low/medium/high/critical) - **JSON** — 结构化的 `report.json`,用于与其他工具集成 - **Markdown/HTML** — 可导航的报告,包含指标和指向受影响代码行的链接 - **SARIF** — 与 GitHub Code Scanning 集成(Security 选项卡) ## ⚙️ 配置 ``` # .antipatterns.yml orgs: ka0s-klaus: token_env: GH_TOKEN_KA0S output: reports/ka0s/ publish: true masorange: token_env: GH_TOKEN_MASORANGE output: reports/masorange/ publish: false # datos de cliente: nunca se publican thresholds: god_object: methods: 20 loc: 400 function_loc: 80 cyclomatic: 15 duplication_pct: 5 ``` ## 🗺️ 路线图 | 阶段 | 内容 | 状态 | | --- | --- | --- | | **0 — 脚手架** | Go 模块, Cobra CLI, Finding 模型, console+JSON 渲染器 | 🔄 进行中 | | **1 — 原生 MVP** | tree-sitter + 检测器: God Object, 巨型函数, magic numbers | ⏳ 待定 | | **2 — OSS 适配器** | `jscpd`, `madge`, `radon`, `gocyclo`, 优雅跳过 | ⏳ 待定 | | **3 — SARIF + Action** | GitHub Action, PR 评论, Code Scanning | ⏳ 待定 | | **4 — 多组织** | `scan-org`, profiles, 并行处理, 汇总面板 | ⏳ 待定 | | **5 — 发布** | README, license, 交叉编译 releases | ⏳ 待定 | ## 📄 许可证 MIT © [Ka0s-Klaus](https://github.com/Ka0s-Klaus)
标签:Go, Ruby工具, tree-sitter, 云安全监控, 代码异味, 反模式检测, 弱口令爆破, 技术债务, 日志审计, 自动化安全运营, 静态分析