

project/
├── train.py
├── data_loader.py
├── README.md
├── requirements.txt
├── models/
│ ├── control_pathway.py
│ ├── semantic_pathway.py
│ ├── feature_fusion_module.py
│ ├── transformer_llm_module.py
│ └── multi_task_predictor.py
我们使用 LineVul 数据集进行漏洞检测:
Michael Fu 和 Chakkrit Tantithamthavorn, "LineVul: A Transformer-based Line-Level Vulnerability Prediction", MSR 2022.
论文:https://conf.researchr.org/details/msr-2022/msr-2022-technical-papers/26/LineVul-A-Transformer-based-Line-Level-Vulnerability-Prediction
仓库:https://github.com/awsm-research/LineVul
我们进一步将数据集预处理为图结构,并将每个样本与 LLM 生成的解释对齐。
我们使用以下预训练模型:
OpenAI GPT-4o-mini
OpenAI, "Hello GPT-4o", 2024.
URL:https://openai.com/index/hello-gpt-4o/
Qwen 模型(Qwen3 系列)
Qwen Team, "Qwen3 Technical Report", arXiv:2505.09388, 2025.
论文:https://arxiv.org/abs/2505.09388
仓库:https://github.com/QwenLM/Qwen3
GraphCodeBERT
Guo 等人, "GraphCodeBERT: Pre-training Code Representations with Data Flow", ICLR 2021.
论文:https://arxiv.org/abs/2009.08366
仓库:https://github.com/microsoft/CodeBERT
本项目使用公开可用的数据集和预训练模型。其许可证如下所列:
LineVul 数据集
许可证:MIT 许可证
来源:https://github.com/awsm-research/LineVul
OpenAI GPT-4o-mini
使用须遵守 OpenAI 使用条款。
Qwen 模型(Qwen3.5-4B)
许可证:Apache 许可证 2.0
来源:https://github.com/QwenLM/Qwen3
GraphCodeBERT
许可证:MIT 许可证
来源:https://github.com/microsoft/CodeBERT
所有资源均按照其各自许可证使用。
python >= 3.9
torch>=2.0.0
torch-geometric>=2.4.0
transformers>=4.35.0
accelerate>=0.25.0
sentencepiece
pandas>=1.5.0
tqdm>=4.60.0
tensorboard
PyTorch Geometric (PyG) 依赖于 CUDA。请根据你的环境进行安装。
data/
├── processed/
│ ├── train_data_masked.pt
│ ├── train_with_llm.csv
│ ├── val_data_masked.pt
│ ├── val_with_llm.csv
│ ├── test_data_masked.pt
│ ├── test_with_llm.csv
├── config/
│ └── node_vocab.json
CSV 文件必须包含以下字段:
index:唯一样本 IDfunc_before:源代码llm_explanation:LLM 生成的解释每个 PyG Data 对象必须包含:
index:与 CSV 对齐x:节点特征ast_edge_index:AST 边cfg_edge_index:CFG 边y_f:函数级标签y_s:行级标签line_mask:令牌到行的映射框架使用以下预训练模型:
Qwen/Qwen3.5-4Bmicrosoft/graphcodebert-base你可以通过以下方式修改:
--llm_model_name
--transformer_base_name
python train.py \
--train_pt_path ./data/processed/train_data_masked.pt \
--train_csv_path ./data/processed/train_with_llm.csv \
--valid_pt_path ./data/processed/val_data_masked.pt \
--valid_csv_path ./data/processed/val_with_llm.csv \
--vocab_path ./data/config/node_vocab.json \
--output_dir ./outputs \
--run_name demo
结果将保存到:
outputs/<run_name>/
包括: