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、效果图

相关推荐
东风破_17 小时前
ESLint 是什么?为什么你的项目需要它?
前端·后端·代码规范
先吃饱再说21 小时前
代码写得好不好,谁说了算?ESLint 如何让团队代码风格“自动统一”
代码规范·eslint
懒人wsh1 天前
一个潜伏3天半才爆的bug-从502到Too-many-open-files的排查记录
代码规范
烬羽1 天前
ESLint 10 把 .eslintrc 删了:flat config 到底怎么配,我帮你踩完了
代码规范·eslint·前端工程化
_约书亚_1 天前
Chapter 4 并发同步操作 · 归纳总结
代码规范
Asize1 天前
ESLint 到底在帮我们守住什么?从规则配置到工程实践
代码规范·eslint
嘟嘟07171 天前
ESLint 入门:从 npm run lint 到 --fix 与规则级别一次讲清
javascript·代码规范·eslint
不好听6131 天前
ESLint 从零到落地:把"代码规范"变成机器的强制检查
代码规范
用户938515635072 天前
ESLint 代码规范完全指南——从 AST 原理到 flat config 逐行解析
javascript·后端·代码规范
梦梦代码精3 天前
连锁品牌数字化:从门店扩张到用户资产运营的技术底座
大数据·人工智能·低代码·docker·开源·代码规范