1. 项目概述

我在团队中主要负责渐进式上下文补全、大模型调用、漏洞解释生成、修复建议输出,是连接后端规则分析与前端插件展示的核心环节。AI 模块的稳定性、准确率和响应速度,将直接决定项目最终能否达到可演示、可考核、可验收的标准。

本次迭代核心聚焦上下文补全能力增强、Python+SQLite 注入检测逻辑优化、全流程中文输出适配三大方向。

2. 核心功能模块

2.1 VS Code 插件模块(vscode-extension/)

这个框架前期同学已经完成,由于我的主文件夹使用中文命名且Python版本较低(Python3.8),所以本次修改将插件进行了本地化调整与兼容调整,如果主文件夹不包含中文等特殊字符且Python版本较高参考原先配置文件即可。

此处做出提醒:文档中第一次启动前端时需要先进入相应目录再执行相关代码,否则找不到相关程序。

2.1.1 上下文智能补全

针对用户选中代码片段过短导致检测失效的问题,新增上下文补全能力,核心逻辑如下:

触发规则:开启配置项 expandContextForShortSelections 时,若选中内容行数 / 字符数低于 contextExpansionMinLines/contextExpansionMinChars,弹窗询问用户是否补全上下文;

  • 扩窗逻辑:按 contextExpansionStepLines 行步长逐步扩大分析窗口,最多迭代 contextExpansionMaxIterations 次,抽离至 src/contextExpansion.ts 统一管理;
  • 交互逻辑:用户确认补全则发起扩窗分析,取消则提示「选中内容不足」且不发起分析;
  • 元数据反馈:扩窗分析结束后,返回对象附加 _codeguard_context_expansion 字段,包含最终窗口行号、迭代轮数、停止原因(中文)。

2.1.2 中文输出与交互适配

  • 由于vscode插件与功能较多且普遍使用纯英文名称,很难找到我们的插件功能,因此我将输出通道命名为「CodeGuard 导师」,方便查找;
  • 迎合国内初学者用户习惯,将所有交互文案(请求 / 响应提示、进度通知、错误信息、风险等级说明等)均改为中文;
  • 后端返回的英文风险摘要做中文映射翻译,确保全流程无英文交互;
  • 配置项 / 命令标题中文适配:如 expandContextForShortSelections 等上下文补全相关配置项,描述均改为中文。

2.1.3 风险结果结构化展示

  • 当上下文补全分析检出风险时:
  • 通知栏追加「风险位置 + 风险类型」中文摘要;
  • 输出面板结构化展示每条风险的行号范围、类型(如 SQL 注入)、严重程度及详细说明。

2.1.4 新增配置项(package.json)

配置项名

作用

expandContextForShortSelections

是否开启短选区上下文补全

contextExpansionMinLines

触发补全的最小行数阈值

contextExpansionMinChars

触发补全的最小字符数阈值

contextExpansionStepLines

每次扩窗的行步长

contextExpansionMaxIterations

最大扩窗迭代次数

2.2 后端分析模块(backend/)

2.2.1 Python+SQLite 注入检测逻辑优化

  • 核心目标:解决教学场景(终端 / SQLite 代码)漏报、误报问题,增强污点分析准确性。
  • 污点源扩展:新增 input()、os.getenv、os.environ.get、sys.argv[…]、os.environ[…] 等不可信输入来源识别,覆盖终端 / 环境变量 / 命令行参数等场景;
  • 函数形参污点处理:def/async def/lambda 函数体范围内,将形参视为污点(如 login(username, password) 拼 SQL 场景),离开函数作用域时撤销污点绑定,避免跨作用域误报;
  • 作用域与默认值顺序:先遍历形参注解与默认值(按外层语义),再绑定函数体内部形参污点,避免默认值表达式误用已绑定形参;
  • 字面量赋值净化:右侧为 ast.Constant 的赋值操作,清除左侧变量的污点及「危险 SQL」状态,减少 username = "fixed" 等场景的误报。

2.2.2 兼容性适配

  • risk_evaluator.py、final_result_schema.py 等文件中,将 list[...] 改为 typing.List,补充 from __future__ import annotations,兼容 Python 3.8 及更低版本解析;
  • 保持原有 Flask request.args.get/request.form.get 等污点源识别逻辑,确保 Web 场景回归兼容。

2.3 新的测试

  • 新增测试种类:使用包含Python+SQLite相关漏洞的测试代码片段对现有漏洞识别能力进行扩展。具体片段见文末截图。

3. 数据流流程

4. 后续优化方向

  • 后端 reason/attack_path 等字段的中文化或 i18n 分层设计;
  • 插件侧「原始 JSON 输出」增加折叠 / 隐藏配置项;
  • 扩展更多污点源(读文件、json.loads 结果)与 SQL API 形态识别;
  • 完善上下文补全停止规则(如检测到文件边界、语法结束符自动停止)。

5. 优化过程截图:

第一次修改:仅上下文提示时采用中文输出

并且在对漏洞的筛查方面存在漏报情况(此处选中代码存在SQL注入漏洞)

第二次修改:调整漏洞检测逻辑,解决了漏洞漏报情况

第三次修改:将返回文字部分用中文输出,为初学者减轻语言负担:

附:测试使用的代码(仅展示相关漏洞片段):

Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐