PhpCodeArcheology/PhpCodeArcheology
GitHub: PhpCodeArcheology/PhpCodeArcheology
一款 PHP 静态分析工具,通过 60 多项架构与可维护性指标、Git 热点检测和 AI 就绪的 MCP 接口,帮助团队评估代码质量、追踪技术债务并指导重构优先级。
Stars: 65 | Forks: 4
# PhpCodeArcheology
[](https://packagist.org/packages/php-code-archeology/php-code-archeology)
[](https://packagist.org/packages/php-code-archeology/php-code-archeology)
[](https://packagist.org/packages/php-code-archeology/php-code-archeology)
[](https://glama.ai/mcp/servers/PhpCodeArcheology/PhpCodeArcheology)
**PhpCodeArcheology** 是一款 PHP 静态分析工具,它通过 60 多项指标(包括圈复杂度、可维护性指数、耦合度和内聚性)来衡量代码质量。它可以为文件、类、方法和函数生成详尽的报告——检测代码异味,通过 git 变动分析识别热点,并跟踪质量趋势。
与 PHPStan 或 Psalm(侧重于类型安全和错误检测)不同,PhpCodeArcheology 专注于**架构和可维护性**——为您提供理解和改进代码库结构所需的洞察。可以将其视为 PHPMetrics 的替代方案,它具有更深入的 git 集成、基线管理和适配 AI 的输出。

## 功能特性
- 针对每个文件、类和函数提供 **60 多项代码质量指标**——圈复杂度、认知复杂度、可维护性指数、LCOM、Halstead 度量、耦合度、不稳定度等
- 包含 14 条内置规则的**问题检测**——God Class(上帝类)、过于复杂、死代码、安全异味、违反 SOLID 原则、过深的继承、低类型覆盖率、未测试的复杂代码
- **测试分析**——自动检测 PHPUnit/Pest/Codeception,将测试文件映射到生产类,集成 Clover XML 以获取行级覆盖率,突出显示未测试的热点
- **Git 集成**——变动分析、热点检测(高变动率 + 高复杂度)、作者追踪
- **源代码展示**——直接在 HTML 报告中查看方法源代码,支持 PHP 语法高亮和嵌套深度热力图,让您能一眼揭示复杂度热点([详见下文](#source-code-display))
- **多种报告格式**——交互式 HTML、Markdown、JSON、SARIF(用于 GitHub Code Scanning)、AI 摘要、知识图谱 (JSON)
- **健康评分**——为您的整个项目提供单一的 0-100 分制以及 A-F 等级评定
- **技术债务评分**——按每 100 行逻辑代码标准化的加权问题评分
- **历史追踪**——跨多次分析运行的趋势图
- **基线管理**——仅追踪新问题,忽略现有问题(非常适合遗留项目)
- **适配 CI/CD**——可配置的退出码,用于 GitHub Code Scanning 的 SARIF,用于自定义工具的 JSON
- **快速模式**——仅输出到终端的快速分析,不生成报告
- **生成 CLAUDE.md**——为 AI 编程助手自动生成的项目概览
- **AI 集成**——为 Claude Code 等AI助手提供的原生 MCP server([详见下文](#ai-integration-mcp-server))
## 快速开始
```
composer require --dev php-code-archeology/php-code-archeology
./vendor/bin/phpcodearcheology
```
无需配置文件——该工具开箱即用。它会扫描您的 `src` 目录,并在 `tmp/report` 中创建一份 HTML 报告。在浏览器中打开 `tmp/report/index.html` 即可查看。
## 目录
- [前置条件](#prerequisites)
- [安装](#installation)
- [使用 Composer 插件](#using-the-composer-plugin)
- [CLI 选项](#cli-options)
- [子命令](#subcommands)
- [配置](#configuration)
- [测试分析](#test-analysis)
- [报告类型](#report-types)
- [源代码展示](#source-code-display)
- [知识图谱导出](#knowledge-graph-export)
- [核心指标](#key-metrics)
- [AI 集成 (MCP Server)](#ai-integration-mcp-server)
- [理解健康评分](#understanding-the-health-score)
- [内存与性能](#memory-and-performance)
- [关于指标准确性的说明 (v2.7.0)](#a-note-on-metric-accuracy-v270)
- [开发](#development)
- [路线图](#roadmap)
- [贡献](#contributing)
## 前置条件
- PHP 8.2 或更高版本(适用于 8.2、8.3、8.4、8.5)
- Composer
## 安装
```
composer require --dev php-code-archeology/php-code-archeology
```
### 全局安装
```
composer global require php-code-archeology/php-code-archeology
```
确保 `~/.composer/vendor/bin`(或 `~/.config/composer/vendor/bin`)位于您的 `$PATH` 中。然后您可以在任何目录下运行:
```
phpcodearcheology /path/to/your/project
```
### Docker
```
docker build -t phpcodearcheology https://github.com/PhpCodeArcheology/PhpCodeArcheology.git
```
针对本地项目运行:
```
docker run --rm -v "$(pwd)":/project -v "$(pwd)/report":/output phpcodearcheology /project
```
这会将您的项目挂载到容器中,并将 HTML 报告写入 `./report/`。
### PHAR(适用于遗留代码库)
如果您的项目存在与 PhpCodeArcheology 要求的依赖冲突(例如较旧版本的 `nikic/php-parser`),请从 [Releases](https://github.com/PhpCodeArcheology/PhpCodeArcheology/releases) 页面下载独立的 PHAR 文件。该 PHAR 捆绑了所有依赖项,无需更改您项目的 `composer.json` 即可运行。
```
# 从最新 release 下载 PHAR 和校验和
curl -LO https://github.com/PhpCodeArcheology/PhpCodeArcheology/releases/latest/download/phpcodearcheology.phar
curl -LO https://github.com/PhpCodeArcheology/PhpCodeArcheology/releases/latest/download/phpcodearcheology.phar.sha256
# 验证 checksum
shasum -a 256 -c phpcodearcheology.phar.sha256 # macOS
sha256sum -c phpcodearcheology.phar.sha256 # Linux
# 运行它 (PHP 8.2+)
php phpcodearcheology.phar --quick src/
```
在以下情况请使用 PHAR:您项目的依赖与 PhpCodeArcheology 的依赖发生冲突,您希望在不执行 `composer require --dev` 的情况下配置 CI 步骤,或者您正在分析一个添加开发依赖有风险的遗留代码库。
## 使用 Composer 插件
PhpCodeArcheology 将自身注册为 Composer 插件,因此您可以直接通过 Composer 运行分析:
```
composer codearch:analyze
```
当未提供路径且不存在配置文件时,它会自动从 `composer.json` 检测您的 PSR-4 源目录。支持所有 CLI 选项:
```
composer codearch:analyze -- --quick
composer codearch:analyze -- --report-type=json --coverage-file=clover.xml
composer codearch:analyze -- src/ lib/
```
交互式创建配置文件:
```
./vendor/bin/phpcodearcheology init
```
## CLI 选项
```
./vendor/bin/phpcodearcheology [options] [path...]
```
| 选项 | 描述 |
|--------|-------------|
| `--report-type=TYPE` | 报告格式:`html`(默认)、`markdown`、`json`、`sarif`、`ai-summary`、`graph`。使用逗号分隔以输出多种格式:`html,json` |
| `--report-dir=DIR` | 输出目录(默认:`tmp/report`) |
| `--quick` | 快速分析,仅输出到终端,不生成报告 |
| `--no-color` | 禁用彩色终端输出(同时支持 `NO_COLOR` 环境变量) |
| `--fail-on=LEVEL` | 在遇到 `error` 或 `warning` 时以退出码 1 退出(用于 CI 流水线) |
| `--generate-claude-md` | 生成 `CLAUDE.md` 项目概览 |
| `--git-root=DIR` | Git 仓库根目录(默认:当前目录) |
| `--extensions=EXT` | 要分析的文件扩展名(以逗号分隔,默认:`php`) |
| `--exclude=DIR` | 要排除的目录(以逗号分隔) |
| `--coverage-file=FILE` | 来自 PHPUnit/Pest 的 Clover XML 覆盖率文件,用于获取行级覆盖率数据 |
| `--source-code` | 在 HTML 报告中包含带有语法高亮和嵌套热力图的源代码([详见下文](#source-code-display)) |
| `--version` | 显示版本号 |
## 子命令
### `init` — 创建配置文件
```
./vendor/bin/phpcodearcheology init
```
交互式创建具有合理默认值的 `php-codearch-config.yaml`。自动检测常见的源目录(`src`、`app`、`lib`)。
### `compare` — 比较两份报告
```
./vendor/bin/phpcodearcheology compare report-before.json report-after.json
```
显示指标、问题数量差异,并列出新增/已解决的问题。有助于回答:“我的重构真的起作用了吗?”
### `baseline` — 仅追踪新问题
```
./vendor/bin/phpcodearcheology baseline create src
./vendor/bin/phpcodearcheology baseline check src
```
`create` 将当前问题集保存为基线。`check` 运行全新的分析,仅报告与基线相比**新增**的问题。如果发现新错误则返回退出码 1——非常适合遗留项目的 CI 流水线。
## 配置
在您的项目根目录下创建 `php-codearch-config.yaml`(或使用 `init` 命令):
```
include:
- "src"
exclude:
- "vendor"
extensions:
- "php"
packageSize: 2
reportDir: "tmp/report"
reportType: "html"
git:
enable: true
since: "6 months ago"
root: "." # Git repository root (useful for monorepos or subdirectory analysis)
graph:
methodCalls: true # Track cross-class method calls in the knowledge graph (default: true)
php:
version: "8.2" # Target PHP version for parsing (default: host PHP version)
shortOpenTags: false # Treat as PHP open tag (default: false)
framework:
detect: true # Auto-detect Symfony/Laravel/Doctrine from composer.json (default: true)
adjustments:
doctrineCycles: true # Downgrade Entity↔Repository cycles to info (default: true)
entityCycles: true # Downgrade Entity↔Entity ORM cycles to info (default: true)
controllerThresholds: true # Raise dependency thresholds for controllers (default: true)
qualityGate:
maxErrors: 0
maxWarnings: 10
thresholds:
tooLong:
file: 400
class: 300
function: 40
method: 30
tooComplex:
cc: 10
ccLargeCode: 20
difficulty: 20
cognitiveComplexity: 15
avgMethodCc: 10
tooManyParameters:
warning: 4
error: 7
tooDependent:
function: 10
class: 20
lowTypeCoverage:
warning: 60
error: 40
deepInheritance:
warning: 4
error: 6
tooMuchHtml:
filePercent: 25
classPercent: 10
fileOutput: 10
classOutput: 4
hotspot:
minChurn: 10
minCc: 15
lcomExclude:
patterns: # Class name patterns to skip LCOM warnings (fnmatch)
- "*Exception"
- "*Error"
interfaces: # Implemented interfaces that justify low cohesion
- "EventSubscriberInterface"
- "EventListenerInterface"
```
上面显示的所有阈值均为默认值。您只需指定要覆盖的值即可。
## 测试分析
PhpCodeArcheology 会自动从 `composer.json` 中检测您的测试基础设施(PHPUnit、Pest 或 Codeception),并使用 PSR-4 命名空间、命名约定和目录结构将测试文件映射到生产类。
**开箱即用的功能:**
- 在 HTML/Markdown/JSON 报告中为每个类提供 `hasTest` 标志和测试文件计数
- 针对圈复杂度 ≥ 8 且无测试的类发出 `UntestedComplexCode` 警告(仅在检测到测试基础设施时)
- 将 `untested` 作为重构优先级的驱动因素
- 在 HTML 和 Markdown 报告中提供一个**测试页面**,包含覆盖率缺口表和仪表盘磁贴
**关于 Pest 的重要提示:** Pest 基于函数的测试(`it(...)`、`test(...)`)不包含类声明,无法仅凭名称映射到生产类。要获取 Pest 项目的准确覆盖率,请生成 Clover XML 报告——无论使用何种测试风格,它都能跟踪实际的代码行执行情况。
**结合 Clover XML 覆盖率数据**(可选,推荐在 Pest 项目中使用),您可以获得每个类的行级覆盖率:
```
# 先生成覆盖率 (需要 Xdebug 或 PCOV PHP 扩展)
XDEBUG_MODE=coverage vendor/bin/pest --coverage-clover clover.xml
# 或:XDEBUG_MODE=coverage vendor/bin/phpunit --coverage-clover clover.xml
# PhpCodeArcheology 自动检测常见位置中的 clover.xml:
# clover.xml, coverage/clover.xml,
# build/logs/clover.xml, build/coverage/clover.xml,
# var/reports/clover.xml, var/coverage/clover.xml (Symfony layout)
./vendor/bin/phpcodearcheology src/
# 或通过 CLI 显式指定:
./vendor/bin/phpcodearcheology --coverage-file clover.xml src/
```
要使路径在多次运行中持久化,请在配置文件中设置它:
```
# php-codearch-config.yaml
coverageFile: var/reports/clover.xml
```
CLI 标志仍优先于配置文件中的值。
覆盖率数据将作为第 10 个因素(权重 10%)计入**健康评分**。`get_test_coverage` MCP 工具向所有 AI 助手开放了覆盖率数据。
## 报告类型
| 类型 | 子目录 | 输出 | 用例 |
|------|-------------|--------|----------|
| `html` | `html/` | 带图表的交互式 HTML 报告 | 基于浏览器的审查 |
| `markdown` | `markdown/` | Markdown 文件 | 基于文本的审查,对 Git 友好 |
| `json` | `json/` | `report.json` | 机器处理,自定义工具 |
| `sarif` | `sarif/` | `report.sarif.json` | GitHub Code Scanning,VS Code SARIF Viewer |
| `ai-summary` | `ai-summary/` | `ai-summary.md` | 供 LLM 使用的高效令牌摘要 |
| `graph` | `graph/` | `graph.json` | 用于 AI 工具和可视化的知识图谱(节点 + 边) |
自 v1.6.0 起,每种报告类型都会写入各自的子目录中。`history.jsonl` 保留在报告根目录中。
```
tmp/report/
├── html/
│ └── index.html
├── json/
│ └── report.json
├── sarif/
│ └── report.sarif.json
├── markdown/
│ └── ...
├── ai-summary/
│ └── ai-summary.md
├── graph/
│ └── graph.json
└── history.jsonl
```
在一次运行中生成多种报告类型:
```
./vendor/bin/phpcodearcheology --report-type=html,json
```
## 源代码展示
HTML 报告可以嵌入方法和函数的实际源代码——带有 PHP 语法高亮和**嵌套深度热力图**,使复杂度一目了然。
```
./vendor/bin/phpcodearcheology --source-code src/
```
**您将看到:**
- 带有语法高亮(由 highlight.js 提供支持)的完整 PHP 源代码
- **嵌套热力图**——位于更深控制结构(if/for/while/switch/catch)内部的代码行会逐渐从黄色变为红色,因此复杂度的驱动因素一目了然
- 代码上方显示的**问题徽章**,展示所有检测到的问题(例如“复杂度过高”)
- **严重性边框**——代码块将获得一个与最严重问题级别相匹配的彩色左边框
**配置:**
```
sourceCode:
enable: true
display: "problems-only" # or "all" for every method/function
```
- `problems-only`(使用 `--source-code` 时的默认值)——仅显示检测到问题的方法的源代码,以控制报告体积
- `all`——显示每个方法和函数的源代码
仅当启用此功能时,报告才会包含 highlight.js 资源。
## 知识图谱导出
`graph` 报告类型将您的代码库结构导出为机器可读的知识图谱——专为 AI 工具、图数据库和自定义可视化而设计。
```
./vendor/bin/phpcodearcheology --report-type=graph --report-dir=output src/
# 写入:output/graph/graph.json
```
JSON 输出包含四个顶级数组:
**`nodes`**——五种类型的节点,每个节点都包含 `id`、`type`、`name`、`metrics` 和 `flags`:
| 节点类型 | 指标 |
|-----------|---------|
| `class` | `cc`、`lcom`、mi`、`instability`、`afferentCoupling`、`efferentCoupling`、`gitChurnCount`、`gitCodeAgeDays` |
| `method` | `cc`、`cognitiveComplexity`、`params` |
| `function` | `cc`、`cognitiveComplexity`、`params` |
| `package` | `abstractness`、`instability`、`distanceFromMainline` |
| `author` | `commitCount`、`filesChanged` |
**`edges`**——节点之间的关系:
| 边类型 | 含义 |
|-----------|---------|
| `declares` | 类 → 方法 |
| `extends` | 类 → 父类 |
| `implements` | 类 → 接口 |
| `uses_trait` | 类 → Trait |
| `depends_on` | 类 → 类(通过 `new` / 静态调用) |
| `calls` | 方法 → 方法(跨类调用,通过 `new` / 静态调用,权重 = 调用点计数) |
| `belongs_to` | 类 → 包 |
| `authored_by` | 类 → 作者 |
| `cycle_member` | 类 ↔ 类(依赖循环,双向) |
**`clusters`**——按包分组的类。
**`cycles`**——检测到的依赖循环及相关的类节点 ID。
```
{
"version": "1.0",
"generatedAt": "2026-03-24T12:00:00+00:00",
"nodes": [
{ "id": "class:x1a2b3c4", "type": "class", "name": "App\\UserService",
"path": "/src/UserService.php",
"metrics": { "cc": 12, "lcom": 3, "mi": 65.2, "instability": 0.8,
"afferentCoupling": 5, "efferentCoupling": 20,
"gitChurnCount": 15, "gitCodeAgeDays": 42 },
"flags": { "interface": false, "trait": false, "abstract": false,
"final": false, "enum": false },
"problems": [] }
],
"edges": [
{ "source": "class:x1a2b3c4", "target": "class:x9c0d1e2f",
"type": "depends_on", "weight": 1 }
],
"clusters": [
{ "id": "package:App\\Services", "name": "App\\Services",
"nodeIds": ["class:x1a2b3c4"] }
],
"cycles": [
{ "nodes": ["class:xabc123", "class:xdef456"], "length": 2 }
]
}
```
## 核心指标
| 指标 | 描述 |
|--------|-------------|
| **圈复杂度 (CC)** | 穿过代码的独立路径数量。低于 5 为良好,高于 10 需要关注。 |
| **认知复杂度** | 理解代码的难易程度(考虑了嵌套深度)。 |
| **可维护性指数 (MI)** | 来自 CC、Halstead 卷和 LOC 的综合得分。高于 85 为良好,低于 65 需要警惕。 |
| **LCOM** | 方法缺乏内聚性——类中方法彼此之间的相关程度。越低越好。 |
| **Halstead 度量** | 基于操作符/操作数的难度、工作量、体积和词汇量。 |
| **类型覆盖率** | 带有类型声明的参数和返回值的百分比。 |
| **不稳定度** | 输出耦合与总耦合的比率(0 = 稳定,1 = 不稳定)。 |
| **技术债务评分** | 按每 100 行逻辑代码标准化的加权问题分数。 |
| **健康评分** | 整体项目质量等级,从 A(优秀)到 F(严重)。 |
有关详细的描述、公式、阈值和解释指南,请参阅 **[指标参考](docs/metrics.md)**。
HTML 报告还包含完整的**指标词汇表**,涵盖了描述、阈值和严重性级别。
## AI 集成 (MCP Server)
PhpCodeArcheology 包含一个原生的 **MCP (Model Context Protocol) server**——像 Claude 这样的 AI 助手可以直接查询您的代码库分析结果,而无需读取文件或手动解析 JSON。
### 结合 Claude Code 进行设置
设置方法取决于您如何安装 PhpCodeArcheology:
**全局安装**(`composer global require php-code-archeology/php-code-archeology`):
```
claude mcp add phpcodearcheology -- phpcodearcheology mcp
```
**项目依赖**(`composer require --dev php-code-archeology/php-code-archeology`):
```
claude mcp add phpcodearcheology -- vendor/bin/phpcodearcheology mcp
```
或者,将 `.mcp.json` 放入您的项目根目录以便团队共享:
```
{
"mcpServers": {
"phpcodearcheology": {
"command": "vendor/bin/phpcodearcheology",
"args": ["mcp"]
}
}
}
```
连接成功后,Claude 可以回答诸如“哪些类的技术债务最高?”、“给我看所有的 God Class”或“这个项目中最重要的重构优先级是什么?”之类的问题——并且使用的是实时分析数据。
### 可用的 MCP 工具
| 工具 | 描述 |
|------|-------------|
| `get_health_score` | 整体代码健康评分、等级和项目统计信息 |
| `get_problems` | 代码质量问题,可按严重程度和类型过滤 |
| `get_metrics` | 特定类、文件或函数的详细指标 |
| `get_hotspots` | 按变动率 × 复杂度排名的 Git 热点 |
| `get_refactoring_priorities` | 带有建议的排名重构候选者 |
| `get_dependencies` | 类依赖分析(传入/传出) |
| `get_class_list` | 包含关键指标的所有类,可排序和过滤 |
| `get_graph` | JSON 格式的知识图谱(节点、边、循环) |
| `get_impact_analysis` | 影响分析:如果您更改某个方法会破坏什么?显示调用者和调用链 |
| `get_test_coverage` | 测试覆盖率摘要——已测试/未测试的类、覆盖率缺口、测试映射 |
| `search_code` | 按名称搜索实体并附带指标概览 |
## 理解健康评分
健康评分(0–100)是**追踪趋势的指南**,而非对代码质量的绝对评判。需要注意以下几点:
- **复杂的领域会产生复杂的代码。** 金融计算引擎、协议解析器或编译器的 Halstead 难度和圈复杂度自然会高于 REST API。这是预期之内的,而不是缺陷。
- **分数随时间推移最有用。** 一个项目如果在六个月内分数从 65 变为 72,那就是在进步——即使它永远达不到 90 分。
- **关注异常值,而非平均值。** 最具可操作性的洞察在于:哪些类与项目基线的偏差显著。它们就是您的重构候选者。
- **不要跨项目比较。** Symfony 应用中 80 分的意义与 CLI 工具中 80 分的意义并不相同。不同的架构和领域具有不同的固有复杂性下限。
该评分由 10 个因素(可维护性指数、问题密度、复杂度、耦合度、代码结构、HTML 比例、封装性、依赖关系、抽象程度和测试覆盖率)加权得出。有关具体的公式和权重,请参阅 [`docs/metrics-formulas.md`](docs/metrics-formulas.md)。
**延伸阅读:** [我在实践中如何使用 PhpCodeArcheology](https://www.marcuskober.de/en/blog/how-i-use-phpcodearcheology/)——一篇涵盖遗留评估、热点发现和衡量重构成效的真实案例解析。
## 内存与性能
系统会**自动排除** `vendor/`、`node_modules/` 和 `.git/` 目录——您无需进行此配置。如果您将工具指向项目根目录,则仅会分析您自己的代码。
对于**大型代码库**(5万+个文件),分析所需的内存可能超过默认的 1G。该工具遵循您 `php.ini` 中的 `memory_limit` 设置——如果您将其设置为 `-1`(无限制),它将保持无限制。要按项目调整限制,请在配置文件中添加 `memoryLimit`:
```
# php-codearch-config.yaml
memoryLimit: "2G" # or "-1" for unlimited
```
## 关于指标准确性的说明 (v2.7.0)
我在自己的项目中广泛使用 PhpCodeArcheology 来长期跟踪代码质量。在此过程中,我发现某些指标值并不完全合理——方法级的 Halstead 难度显得过高,某些类被误报为 God Class,以及错误计数感觉偏多。
经过彻底审查,我发现并修复了自早期版本以来就存在的几个计算 bug。影响最大的是方法级别的 Halstead 操作数追踪 bug,此外还包括复杂性预测中的重复计算、God Class 检测中的误报以及其他一些问题。
我对这些不准确之处深表歉意。代码分析工具最重要的是必须值得信赖,而这些 bug 削弱了这一点。版本 2.7.0 修正了所有已知的计算问题,我添加了手工计算的测试夹具,以确保公式在将来保持准确。
**这对您意味着什么:** 如果您从早期版本升级,您的分析结果将会发生变化——最明显的是,错误计数将显著减少,健康评分将有所提高。该工具在首次运行时会显示一次性通知。有关每项更改及其预期影响的详细细分,请参阅 [`docs/metrics-formulas.md`](docs/metrics-formulas.md)。
## 开发
HTML 报告模板使用 **Tailwind CSS**。编译后的 `output.css` 已提交到仓库中,因此您**不需要**安装 Node.js 即可使用或为本项目做出贡献。
如果您修改了 HTML 模板或 CSS,请使用以下命令重新构建:
```
npm install
npm run build:css
```
在开发过程中实时重新构建:
```
npm run watch:css
```
## 路线图
计划的功能请参阅 [ROADMAP.md](ROADMAP.md)。下一个主要版本(**3.0**)正在 `3.0.x` 分支上开发——它重构了相对问题阈值的计算方式,使用稳健的统计异常值检测取代了当前的“高于/低于项目平均值百分比”规则。在 [3.0.0 里程碑](https://github.com/PhpCodeArcheology/PhpCodeArcheology/milestone/1)中跟踪进度。
## 贡献
欢迎贡献代码!请查看 [未解决的问题](https://github.com/PhpCodeArcheology/PhpCodeArcheology/issues) 以了解错误和功能请求,或查看 [路线图](ROADMAP.md) 了解计划中的功能。对于较大的更改,请先提出一个 Issue 以讨论实现方案。
## 作者
Marcus Kober — [GitHub](https://github.com/marcuskober)
## 许可证
MIT
标签:AI辅助, ffuf, Git Churn, MCP Server, PHPMetrics替代, PHP开发, PHP静态分析, 代码复杂度, 代码度量, 代码异味, 代码热点, 代码规范, 依赖图, 可维护性, 图数据库, 威胁情报, 开发者工具, 开源框架, 技术债, 持续集成, 架构分析, 请求拦截, 软件架构, 重构工具