MultiversX代码库评估Skill multiversx-project-culture

这个技能用于评估MultiversX区块链项目的代码库质量和成熟度,涵盖文档、测试、代码卫生和开发实践,帮助进行审计、风险管理和开发改进。关键词:代码评估、测试覆盖、文档质量、CI/CD、MultiversX、区块链开发、软件测试。

测试 0 次安装 0 次浏览 更新于 3/21/2026

name: multiversx-project-culture description: 基于文档、测试实践和代码卫生指标评估代码库的质量和成熟度。用于评估项目可靠性、估算审计工作量或入职新代码库时使用。

项目文化与代码成熟度评估

基于文档存在性、测试文化、代码卫生和开发实践评估 MultiversX 代码库的质量和可靠性。此评估有助于校准审计深度并识别关注领域。

何时使用

  • 开始与新项目合作时
  • 估算审计范围和工作量时
  • 评估投资或集成风险时
  • 提供开发实践反馈时
  • 优先审查重点领域时

1. 文档质量

文档存在性检查清单

项目 位置 状态
README.md 项目根目录 [ ] 存在 [ ] 有用
构建说明 README 或 BUILDING.md [ ] 存在 [ ] 测试过
API 文档 docs/ 或内联 [ ] 存在 [ ] 完整
架构概述 docs/ 或 specs/ [ ] 存在
部署指南 README 或 DEPLOY.md [ ] 存在

MultiversX 特定文档

项目 用途 状态
multiversx.json 标准构建配置 [ ] 存在
sc-config.toml 合约配置 [ ] 存在
multiversx.yaml 附加配置 [ ] 可选
snippets.sh 交互脚本 [ ] 有帮助
interaction/ 部署/调用脚本 [ ] 非常有帮助

规范文档

文档 质量指标
白皮书 行为的形式规范
specs/ 目录 详细技术规格
MIP 合规文档 标准遵循文档
安全考虑 威胁模型意识

文档质量评分

高质量:
- README 解释目的、构建、测试、部署
- 架构图存在
- API 完全文档化并带示例
- 安全模型文档化

中等质量:
- README 带有基本说明
- 部分内联文档
- 部分 API 覆盖

低质量:
- 最小化或无 README
- 无内联注释
- 无架构文档

2. 测试文化评估

测试存在性

# 检查 Rust 单元测试
grep -r "#\[test\]" src/

# 检查场景测试
ls -la scenarios/

# 检查集成测试
ls -la tests/

场景测试覆盖

覆盖级别 指标
优秀 每个端点都有场景,边缘情况测试,失败路径覆盖
良好 所有端点有基本场景,一些边缘情况
最小 只有 deploy.scen.json 或少量场景
scenarios/ 目录

测试质量指标

// 高质量:测试覆盖边缘情况
#[test]
fn test_deposit_zero_amount() { }  // 边界
#[test]
fn test_deposit_max_amount() { }   // 边界
#[test]
fn test_deposit_wrong_token() { }  // 错误案例
#[test]
fn test_deposit_unauthorized() { } // 访问控制

// 低质量:只有快乐路径
#[test]
fn test_deposit() { }  // 仅基本

持续集成

CI 功能 状态
自动化构建 [ ] 存在
测试执行 [ ] 存在
覆盖率报告 [ ] 存在
检查/格式化 [ ] 存在
安全扫描 [ ] 存在

模拟测试

查找:

  • mx-chain-simulator-go 使用
  • 基于 Docker 的测试环境
  • 集成测试脚本

3. 代码卫生评估

检查器合规性

# 运行 Clippy
cargo clippy -- -W clippy::all

# 检查格式化
cargo fmt --check
Clippy 状态 解释
0 警告 优秀卫生
< 10 警告 良好,小问题
10-50 警告 需要关注
> 50 警告 差卫生

魔法数字

# 查找原始数字字面量
grep -rn "[^a-zA-Z_][0-9]\{2,\}[^a-zA-Z0-9_]" src/

差:

let seconds = 86400;  // 这是什么?
let fee = amount * 3 / 100;  // 魔法 3%

好:

const SECONDS_PER_DAY: u64 = 86400;
const FEE_PERCENT: u64 = 3;
const FEE_DENOMINATOR: u64 = 100;

let seconds = SECONDS_PER_DAY;
let fee = amount * FEE_PERCENT / FEE_DENOMINATOR;

错误处理

# 计算 unwrap 使用次数
grep -c "\.unwrap()" src/*.rs

# 计算 expect 使用次数
grep -c "\.expect(" src/*.rs

# 计算正确错误处理次数
grep -c "sc_panic!\|require!" src/*.rs
模式 质量指标
主要 require! 带消息
混合 require!unwrap() 需要审查
主要 unwrap()

代码注释

方面 良好实践
复杂逻辑 有解释性注释
公共 API 有文档注释
假设 内联文档化
TODOs 跟踪,不忽略
// 好:复杂逻辑解释
/// 使用复利公式计算奖励。
/// 公式:P * (1 + r/n)^(nt) 其中:
/// - P: 本金
/// - r: 年利率(以基点计)
/// - n: 复利频率
/// - t: 时间(年)
fn calculate_rewards(&self, principal: BigUint, time: u64) -> BigUint {
    // ...
}

// 差:复杂逻辑无解释
fn calc(&self, p: BigUint, t: u64) -> BigUint {
    // 密集、未解释的计算
}

4. 依赖管理

Cargo.lock 存在性

ls -la Cargo.lock
状态 解释
已提交 可重现构建
未提交 版本漂移风险

版本固定

# 好:特定版本
[dependencies.multiversx-sc]
version = "0.64.1"  # 推荐 edition = "2024"

# 差:通配符版本
[dependencies.multiversx-sc]
version = "*"

# 可接受:插入符(小更新)
[dependencies.multiversx-sc]
version = "^0.54"

依赖审计

# 检查已知漏洞
cargo audit

5. 成熟度评分矩阵

分数计算

类别 权重 高 (3) 中 (2) 低 (1)
文档 20% 完整 部分 最小
测试 30% 全面覆盖 基本覆盖 最小
代码卫生 20% 清洁 Clippy 少量警告 多问题
依赖 15% 固定、审计过 固定 通配符
CI/CD 15% 完整流水线 基本

解释

分数 成熟度 审计重点
2.5-3.0 业务逻辑、边缘情况
1.5-2.4 广泛审查、验证基础
1.0-1.4 所有方面,假设问题存在

6. 红旗

立即关注

红旗 风险
完全无测试 逻辑可能未测试
通配符依赖 供应链漏洞
unsafe 块无正当理由 内存安全问题
过多 unwrap() 恐慌漏洞
无 README 维护废弃?
过时框架版本 已知漏洞

黄旗

黄旗 关注点
少量场景测试 有限覆盖
一些 Clippy 警告 技术债务
不完整文档 知识孤岛
无 CI/CD 回归风险

7. 评估报告模板

# 项目成熟度评估

**项目**: [名称]
**版本**: [版本]
**日期**: [日期]
**评估者**: [姓名]

## 摘要分数: [X/3.0] - [高/中/低] 成熟度

## 文档 (分数: X/3)
- README: [存在/缺失]
- 构建说明: [测试过/未测试/缺失]
- 架构文档: [完整/部分/缺失]
- API 文档: [完整/部分/缺失]

## 测试 (分数: X/3)
- 单元测试: [X 测试找到]
- 场景测试: [X 场景覆盖 Y 端点]
- 覆盖率估计: [X%]
- 边缘情况覆盖: [好/部分/最小]

## 代码卫生 (分数: X/3)
- Clippy 警告: [X 警告]
- 格式化: [一致/不一致]
- 魔法数字: [X 实例]
- 错误处理: [好/需要改进]

## 依赖 (分数: X/3)
- Cargo.lock: [已提交/缺失]
- 版本固定: [全部/部分/无]
- 已知漏洞: [无/X 找到]

## CI/CD (分数: X/3)
- 构建自动化: [是/否]
- 测试自动化: [是/否]
- 安全扫描: [是/否]

## 推荐
1. [最高优先级改进]
2. [第二优先级]
3. [第三优先级]

## 审计重点领域
基于此评估,审计应优先:
1. [基于弱点的领域]
2. [基于风险的领域]

8. 按级别改进推荐

对于低成熟度项目

  1. 添加基本 README 带构建说明
  2. 为所有端点创建场景测试
  3. 修复所有 Clippy 警告
  4. 固定依赖版本
  5. 设置基本 CI

对于中成熟度项目

  1. 扩展测试覆盖到边缘情况
  2. 添加架构文档
  3. 文档化安全考虑
  4. 添加覆盖率报告
  5. 实施安全扫描

对于高成熟度项目

  1. 考虑形式验证
  2. 模糊和属性测试
  3. 外部安全审计
  4. 漏洞赏金计划
  5. 事件响应文档