
"DCVD: Dual-Channel Cross-Modal Fusion for Joint Vulnerability Detection and Localization" में दिया गया कोड


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 et al., "GraphCodeBERT: Pre-training Code Representations with Data Flow", ICLR 2021.
पेपर: https://arxiv.org/abs/2009.08366
रिपॉजिटरी: https://github.com/microsoft/CodeBERT
यह प्रोजेक्ट सार्वजनिक रूप से उपलब्ध डेटासेट और पूर्व-प्रशिक्षित मॉडल का उपयोग करता है। उनके लाइसेंस नीचे सूचीबद्ध हैं:
LineVul डेटासेट
लाइसेंस: MIT License
स्रोत: https://github.com/awsm-research/LineVul
OpenAI GPT-4o-mini
उपयोग OpenAI Terms of Use के अधीन है।
Qwen मॉडल (Qwen3.5-4B)
लाइसेंस: Apache License 2.0
स्रोत: https://github.com/QwenLM/Qwen3
GraphCodeBERT
लाइसेंस: MIT License
स्रोत: 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>/
जिनमें शामिल हैं: