NAC_Blockchain/memory/tools/INTEGRATION_GUIDE.md

434 lines
8.1 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# NAC Lint编译辅助检查器 - 集成指南
## 概述
NAC Lint是一个编译前置检查工具自动检测违反NAC原则的代码。本指南介绍如何将NAC Lint集成到您的开发工作流程中。
---
## 快速开始
### 1. 基本使用
```bash
# 检查单个文件
python3 memory/tools/nac_lint.py check --path src/main.rs
# 检查整个目录
python3 memory/tools/nac_lint.py check --path src/
# 列出所有规则
python3 memory/tools/nac_lint.py list-rules
# 生成JSON报告
python3 memory/tools/nac_lint.py check --path src/ --output json --output-file report.json
```
### 2. 检查结果解读
```
❌ CRITICAL: 3 violation(s)
- 阻止编译,必须修复
⚠️ HIGH: 2 violation(s)
- 强烈建议修复,但不阻止编译
MEDIUM: 1 violation(s)
- 建议修复
💡 LOW: 0 violation(s)
- 可选修复
```
---
## 集成方式
### 方式1: Git Pre-commit Hook推荐
**优点**: 在提交前自动检查,防止违规代码进入仓库
**安装步骤**:
```bash
# 1. 复制pre-commit脚本
cp memory/tools/pre-commit .git/hooks/pre-commit
# 2. 设置可执行权限
chmod +x .git/hooks/pre-commit
# 3. 测试(尝试提交一个违规文件)
git add src/test.rs
git commit -m "test"
# 如果有违规,提交会被阻止
```
**工作流程**:
1. 开发者执行 `git commit`
2. Git自动运行pre-commit hook
3. NAC Lint检查staged文件
4. 如果发现CRITICAL违规阻止提交
5. 开发者修复违规后重新提交
---
### 方式2: Cargo Build Script
**优点**: 在cargo build时自动检查
**安装步骤**:
```bash
# 1. 复制build.rs模板到项目根目录
cp memory/tools/build.rs.template build.rs
# 2. 在Cargo.toml中添加如果还没有
# [build-dependencies]
# build.rs不需要额外依赖
# 3. 测试
cargo build
# 如果有违规,构建会失败
```
**工作流程**:
1. 开发者执行 `cargo build`
2. Cargo运行build.rs
3. build.rs调用NAC Lint检查src/
4. 如果发现CRITICAL违规panic阻止构建
5. 开发者修复违规后重新构建
**注意**:
- 只在debug模式下运行检查加快release构建
- 可以通过环境变量 `SKIP_NAC_LINT=1` 跳过检查
---
### 方式3: Makefile集成
**优点**: 统一的命令接口,易于使用
**安装步骤**:
```bash
# 1. 将Makefile.template内容添加到项目Makefile
cat memory/tools/Makefile.template >> Makefile
# 2. 使用
make lint # 运行检查
make build # 先检查再构建
make test # 先检查再测试
make install-hooks # 安装Git hooks
```
**可用命令**:
- `make lint` - 运行NAC Lint检查
- `make lint-json` - 生成JSON报告
- `make lint-rules` - 列出所有规则
- `make build` - 先检查再构建
- `make test` - 先检查再测试
- `make install-hooks` - 安装Git hooks
---
### 方式4: GitHub Actions CI/CD
**优点**: 在PR和push时自动检查团队协作友好
**安装步骤**:
```bash
# 1. 创建GitHub Actions工作流目录
mkdir -p .github/workflows
# 2. 复制工作流文件
cp memory/tools/nac-lint.yml.template .github/workflows/nac-lint.yml
# 3. 提交并推送
git add .github/workflows/nac-lint.yml
git commit -m "Add NAC Lint CI"
git push
```
**工作流程**:
1. 开发者push代码或创建PR
2. GitHub Actions自动运行NAC Lint
3. 生成检查报告并上传为artifact
4. 如果是PR自动在PR中评论检查结果
5. 如果有CRITICAL违规CI失败
---
### 方式5: 手动集成
**适用场景**: 自定义构建流程
```bash
# 在任何脚本中调用
python3 memory/tools/nac_lint.py check --path src/
if [ $? -ne 0 ]; then
echo "NAC Lint check failed"
exit 1
fi
```
---
## 配置文件
### .naclintrc
在项目根目录创建 `.naclintrc` 配置文件:
```bash
# 复制模板
cp memory/tools/.naclintrc.template .naclintrc
# 编辑配置
vim .naclintrc
```
**配置选项**:
```json
{
"version": "1.0",
"enabled": true, // 是否启用检查
"severity_threshold": "high", // 严重性阈值
"exclude_paths": [ // 排除路径
"target/",
"node_modules/",
"*.test.rs"
],
"rules": {
"terminology": {
"enabled": true,
"severity": "critical"
},
"naming": {
"enabled": true,
"severity": "high"
}
},
"fail_on_critical": true, // CRITICAL时失败
"fail_on_high": false, // HIGH时不失败
"output_format": "console", // 输出格式
"verbose": true // 详细输出
}
```
---
## 检查规则
### 当前规则23条
#### CRITICAL级别必须修复
1. **TERM_001-010**: 术语检查
- Token → Asset
- Contract → Certificate
- Balance → Holdings
- PoW/PoS → CBPP
- P2P → CSNP
- RPC → NRPC3.0
- EVM → NVM
- SHA256 → Blake3
- Governance Token → XIC
- Stablecoin → XTZH
2. **TERM_011-020**: 协议和工具检查
- ERC-20 → ACC-20
- Wallet → Asset Vault
- Transaction → Asset Transfer
- Block Explorer → Quantum Holographic Explorer
#### HIGH级别强烈建议修复
1. **ARCH_002**: OpCode命名必须使用UPPER_CASE
2. **ARCH_003**: 必须使用Blake3哈希算法
3. **ARCH_004**: 禁止使用#[allow(unused)]
---
## 常见问题
### Q1: 如何跳过某个文件的检查?
**方法1**: 在.naclintrc中添加排除路径
```json
{
"exclude_paths": [
"src/legacy/old_code.rs"
]
}
```
**方法2**: 在文件顶部添加注释(未实现,计划中)
```rust
// nac-lint: disable
```
### Q2: 如何临时禁用检查?
```bash
# 环境变量
SKIP_NAC_LINT=1 cargo build
# 或在Git提交时
git commit --no-verify
```
### Q3: 检查太慢怎么办?
```bash
# 只检查修改的文件
git diff --name-only | xargs python3 memory/tools/nac_lint.py check --path
# 使用快速模式只检查CRITICAL
python3 memory/tools/nac_lint.py check --path src/ --severity critical
```
### Q4: 如何添加自定义规则?
创建 `memory/rules/custom_rules.json`:
```json
{
"rule_id": "CUSTOM_001",
"category": "custom",
"severity": "medium",
"title": "自定义规则",
"pattern": "your_regex_pattern",
"suggestion": "建议修复方式"
}
```
然后在.naclintrc中引用
```json
{
"custom_rules": [
"memory/rules/custom_rules.json"
]
}
```
---
## 最佳实践
### 1. 团队协作
- ✅ 在项目README中说明NAC Lint的使用
- ✅ 在onboarding时安装Git hooks
- ✅ 在CI/CD中强制执行检查
- ✅ 定期更新规则库
### 2. 开发流程
```bash
# 开发前
make install-hooks # 安装Git hooks
# 开发中
# ... 编写代码 ...
# 提交前(自动运行)
git commit -m "..."
# 如果被阻止
make lint # 查看详细违规
# ... 修复违规 ...
git commit -m "..."
# 构建前(自动运行)
make build
```
### 3. CI/CD流程
```yaml
# .github/workflows/nac-lint.yml
- name: NAC Lint
run: make lint-json
- name: Upload Report
uses: actions/upload-artifact@v3
with:
name: lint-report
path: lint-report.json
```
---
## 故障排除
### 问题1: Python找不到
```bash
# 检查Python版本
python3 --version
# 如果没有Python 3安装
sudo apt install python3
```
### 问题2: 规则文件找不到
```bash
# 确保记忆系统目录结构完整
ls -la memory/principles/
ls -la memory/tools/
# 如果缺失,重新创建
# (参考记忆系统安装指南)
```
### 问题3: Git hook不工作
```bash
# 检查hook是否可执行
ls -la .git/hooks/pre-commit
# 设置可执行权限
chmod +x .git/hooks/pre-commit
# 测试hook
.git/hooks/pre-commit
```
---
## 更新日志
### v1.0.0 (2026-02-07)
- ✅ 初始版本
- ✅ 23条检查规则
- ✅ Git Hook集成
- ✅ Cargo集成
- ✅ Makefile集成
- ✅ GitHub Actions集成
- ✅ 配置文件支持
### 计划中的功能
- [ ] 自动修复(--fix选项
- [ ] IDE集成VS Code插件
- [ ] 实时检查(保存时检查)
- [ ] AI辅助检查
- [ ] 检查报告仪表板
---
## 支持
如有问题,请查看:
- 记忆系统文档: `memory/README.md`
- 快速参考卡: `memory/QUICK_REFERENCE.md`
- 设计文档: `memory/tools/LINT_CHECKER_DESIGN.md`
---
*NAC Lint - 确保代码符合NAC原则避免以太坊遗留*