AI-代码扫描工具

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/                  # 测试文件

扩展开发

可以通过以下方式扩展工具功能:

  1. 添加新规则 : 在 rules/ 目录下创建新的 YAML 文件
  2. 扩展分析器 : 修改 auditor/analyzer.py 添加更复杂的分析逻辑
  3. 添加输出格式 : 修改 auditor/reporter.py 添加新的报告格式

4、效果图

相关推荐
这个DBA有点耶10 小时前
ELT 工具选型完整指南:从 ETL 差异分析到工程落地
数据库·架构·代码规范
这个DBA有点耶12 小时前
分布式事务深度:TCC空回滚、悬挂与Saga补偿风暴的根因与解法
数据库·mysql·代码规范
这个DBA有点耶2 天前
为什么UPDATE比SELECT危险得多?锁范围等于扫描行数
数据库·架构·代码规范
沈麽鬼3 天前
纸上代码
代码规范
深圳老胡4 天前
STM32CubeMX 生成 CMake 工程,用 VSCode 编译与调试的完整流程
笔记·stm32·单片机·代码规范
星星泡饭吃5 天前
【信息安全】越权防护设计评审指南
代码规范
GlobalSign数字证书5 天前
申请 EV 代码签名证书需要准备哪些材料?
代码规范
深圳老胡5 天前
STM32F4 OTA 升级双 App 方案设计与实现
笔记·stm32·单片机·代码规范
深圳老胡5 天前
STM32F4 OTA升级:单App与双App方案优缺点对比
笔记·stm32·单片机·代码规范
这个DBA有点耶6 天前
Change Buffer深入:二级索引写入的隐形加速器与它的代价
数据库·mysql·代码规范