AI-代码扫描工具
1、目的
一个团队或者个人,会因为自己所处位置不同,都有封装过的函数和产品代码业务代码编写规则。本文基于以上痛点,实现代码扫描功能,减轻开发、审核、测试的工作量,提升代码质量。同时用户可以自行添加相应的个性化规则,实现自己的代码管理。扫描和生成检查报告。详细的使用说明见文档和代码。
2、源码位置
3、详细介绍
C/C++ 代码审核工具
一个可扩展的 C/C++ 代码静态分析工具,用于检测代码中的内存泄漏、死锁、死循环、性能问题等。
功能特性
- 内存管理检测: malloc/new 后未释放、双重释放、野指针等
- 并发/死锁检测: 嵌套锁、未释放的互斥锁、std::thread 资源泄漏等
- 循环效率检测: 死循环、循环内重复计算、嵌套循环性能等
- 性能问题检测: 字符串频繁拼接、不必要的拷贝、循环内定义对象等
- 业务逻辑检测: 未检查返回值、Magic Number、敏感信息打印等
- 函数使用范例: fopen、memcpy、strncpy 等函数的正确用法
安装
bash
pip install pyyaml chardet
使用方法
扫描文件或目录
bash
# 扫描整个项目
python main.py scan /path/to/project
# 扫描指定文件
python main.py scan /path/to/file.cpp
# 不递归扫描子目录
python main.py scan /path/to/project --no-recursive
指定规则
bash
# 只启用特定规则类别
python main.py scan /path/to/project --rules memory,deadlock
# 按严重程度过滤
python main.py scan /path/to/project --severity Critical Warning
输出格式
bash
# 彩色终端输出 (默认)
python main.py scan /path/to/project --format color
# JSON 输出
python main.py scan /path/to/project --format json --output report.json
# 纯文本输出
python main.py scan /path/to/project --format text --output report.txt
# 生成 HTML 报告
python main.py scan /path/to/project --format html --output report.html
其他命令
bash
# 列出所有规则
python main.py list-rules
# 按类别筛选规则
python main.py list-rules --category memory
# 添加自定义规则
python main.py add-rule /path/to/your_rule.yaml
添加自定义规则
在 rules/custom/ 目录下创建 YAML 规则文件:
yaml
- id: CUSTOM001
name: "自定义规则名称"
category: business
severity: Warning
description: "规则描述"
patterns:
- pattern: 'your_regex_pattern'
description: "匹配描述"
suggestion: "修复建议"
规则说明
| 类别 | 说明 |
|---|---|
| memory | 内存管理问题 |
| deadlock | 并发/死锁问题 |
| loop | 循环效率问题 |
| performance | 性能问题 |
| business | 业务逻辑问题 |
| example | 函数使用范例 |
| 严重程度 | 说明 |
|---|---|
| Critical | 严重问题,可能导致崩溃或内存泄漏 |
| Warning | 警告,需要关注的问题 |
| Info | 信息性建议 |
项目结构
code_auditor/
├── main.py # 入口文件
├── config.yaml # 配置文件
├── auditor/ # 核心模块
│ ├── scanner.py # 文件扫描
│ ├── analyzer.py # 代码分析
│ ├── rule_engine.py # 规则引擎
│ └── reporter.py # 报告生成
├── rules/ # 规则定义
│ ├── memory_leak.yaml # 内存规则
│ ├── deadlock.yaml # 死锁规则
│ ├── dead_loop.yaml # 循环规则
│ ├── performance.yaml # 性能规则
│ ├── business.yaml # 业务规则
│ └── examples.yaml # 函数范例
└── tests/ # 测试文件
扩展开发
可以通过以下方式扩展工具功能:
- 添加新规则 : 在
rules/目录下创建新的 YAML 文件 - 扩展分析器 : 修改
auditor/analyzer.py添加更复杂的分析逻辑 - 添加输出格式 : 修改
auditor/reporter.py添加新的报告格式
4、效果图
