# AutoCodeQL **Repository Path**: thewingee/auto-code-ql ## Basic Information - **Project Name**: AutoCodeQL - **Description**: 集成CodeQL自动化漏扫流水线 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-10-15 - **Last Updated**: 2025-10-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # CodeQL自动化扫描流水线 这是一个完整的CodeQL自动化扫描流水线,用于扫描`datasets-lang`目录下的项目,生成安全分析报告。 ## 🚀 功能特性 - **自动化扫描**: 自动发现和扫描多种编程语言的项目 - **并行处理**: 支持多线程并行扫描,提高效率 - **智能调度**: 支持定时调度和手动触发 - **结果分析**: 自动分析扫描结果,生成详细报告 - **多格式输出**: 支持SARIF、HTML、JSON、CSV等多种格式 - **可视化图表**: 生成统计图表和趋势分析 - **可配置**: 灵活的配置文件,支持自定义各种参数 ## 📁 目录结构 ``` script/ ├── codeql_pipeline.py # 核心扫描流水线 ├── scheduler.py # 调度器 ├── result_analyzer.py # 结果分析器 ├── config.yaml # 配置文件 ├── requirements.txt # Python依赖 ├── run_pipeline.sh # 启动脚本 └── README.md # 说明文档 ``` ## 🛠️ 安装和配置 ### 1. 安装依赖 ```bash # 安装Python依赖 pip3 install -r requirements.txt # 确保CodeQL CLI已安装 # 默认路径: /Users/winegee/Desktop/mcp_security/codeql/codeql ``` ### 2. 配置设置 编辑 `config.yaml` 文件,根据需要调整配置: ```yaml # 输入配置 input: datasets_lang_dir: "/Volumes/拯救者PSSD/mcp_security/datasets-lang" max_projects_per_language: 20 # 每种语言最多扫描的项目数 max_projects_per_batch: 5 # 每批最多扫描的项目数 # CodeQL配置 codeql: cli_path: "/Users/winegee/Desktop/mcp_security/codeql/codeql" query_suite: "security-and-quality" timeout: 1800 # 30分钟超时 memory: "4G" threads: 4 # 输出配置 output: results_dir: "/Volumes/拯救者PSSD/mcp_security/script/results" reports_dir: "/Volumes/拯救者PSSD/mcp_security/script/reports" databases_dir: "/Volumes/拯救者PSSD/mcp_security/script/databases" ``` ### 3. 设置执行权限 ```bash chmod +x run_pipeline.sh ``` ## 🎯 使用方法 ### 快速开始 ```bash # 预览要扫描的项目 ./run_pipeline.sh preview # 运行完整扫描 ./run_pipeline.sh run # 分析扫描结果 ./run_pipeline.sh analyze ``` ### 详细命令 #### 1. 预览模式 ```bash # 预览所有项目 ./run_pipeline.sh preview # 预览指定语言的项目 python3 codeql_pipeline.py --dry-run --languages Python TypeScript ``` #### 2. 执行扫描 ```bash # 运行完整扫描 ./run_pipeline.sh run # 只扫描指定语言 ./run_pipeline.sh run --languages Python TypeScript JavaScript # 限制每种语言的项目数量 ./run_pipeline.sh run --max-projects 10 # 调整并行工作线程数 ./run_pipeline.sh run --parallel-workers 4 ``` #### 3. 调度器 ```bash # 启动调度器(定时扫描) ./run_pipeline.sh schedule # 立即执行一次扫描 ./run_pipeline.sh run-once # 指定语言的一次性扫描 ./run_pipeline.sh run-once --languages Python ``` #### 4. 结果分析 ```bash # 分析所有结果 ./run_pipeline.sh analyze # 指定结果目录 python3 result_analyzer.py --results-dir /path/to/results --output-dir /path/to/analysis ``` #### 5. 维护操作 ```bash # 查看流水线状态 ./run_pipeline.sh status # 清理临时文件 ./run_pipeline.sh clean ``` ## 📊 输出结果 ### 扫描结果 - **SARIF文件**: 每个项目的详细扫描结果 - **日志文件**: 详细的执行日志 - **数据库文件**: CodeQL数据库(可选保留) ### 分析报告 - **HTML报告**: 可视化的安全分析报告 - **JSON报告**: 结构化的数据报告 - **CSV文件**: 便于进一步分析的表格数据 - **统计图表**: PNG格式的统计图表 - **汇总报告**: 文本格式的汇总信息 ### 报告内容 - 按语言统计的安全问题 - 按严重程度分类的问题 - 按类别分组的安全漏洞 - 问题最多的项目排行 - 最常见的规则排行 ## 🔧 高级配置 ### 语言映射 流水线支持以下编程语言的自动检测和扫描: | 语言 | CodeQL语言 | 支持状态 | |------|------------|----------| | Python | python | ✅ | | TypeScript | javascript | ✅ | | JavaScript | javascript | ✅ | | Go | go | ✅ | | Rust | rust | ✅ | | Java | java | ✅ | | C# | csharp | ✅ | | C++ | cpp | ✅ | | PHP | php | ✅ | | Ruby | ruby | ✅ | | Swift | swift | ✅ | | Kotlin | java | ✅ | | 其他 | 根据文件扩展名 | ⚠️ | ### 性能调优 ```yaml # 调整并行度 pipeline: parallel_workers: 4 # 增加并行工作线程 # 调整资源使用 codeql: memory: "8G" # 增加内存限制 threads: 8 # 增加线程数 timeout: 3600 # 增加超时时间 ``` ### 自定义查询 ```yaml codeql: # 使用自定义查询套件 query_suite: "security-and-quality" # 或者使用特定查询 # query_suite: "javascript/ql/src/Security/CWE-079" ``` ## 📈 监控和维护 ### 日志监控 ```bash # 查看实时日志 tail -f logs/codeql_pipeline_*.log # 查看调度器日志 tail -f logs/scheduler.log ``` ### 磁盘空间管理 ```bash # 定期清理数据库文件 ./run_pipeline.sh clean # 手动清理旧日志 find logs -name "*.log" -mtime +7 -delete ``` ### 性能监控 - 监控CPU和内存使用情况 - 检查磁盘空间 - 观察扫描完成率 ## 🚨 故障排除 ### 常见问题 #### 1. CodeQL CLI未找到 ```bash # 检查CodeQL路径 ls -la /Users/winegee/Desktop/mcp_security/codeql/codeql # 更新配置文件中的路径 vim config.yaml ``` #### 2. 内存不足 ```bash # 减少并行工作线程 # 减少内存限制 # 分批处理项目 ``` #### 3. 扫描超时 ```bash # 增加超时时间 # 减少每批项目数量 # 检查项目大小 ``` #### 4. 权限问题 ```bash # 检查目录权限 chmod -R 755 /Volumes/拯救者PSSD/mcp_security/script/ # 检查CodeQL权限 chmod +x /Users/winegee/Desktop/mcp_security/codeql/codeql ``` ### 调试模式 ```bash # 启用详细日志 export PYTHONPATH=$PYTHONPATH:$(pwd) python3 -u codeql_pipeline.py --languages Python --max-projects 1 ``` ## 📝 最佳实践 1. **分批处理**: 对于大量项目,建议分批处理 2. **资源监控**: 定期监控系统资源使用情况 3. **结果备份**: 定期备份重要的扫描结果 4. **定期清理**: 定期清理临时文件和旧日志 5. **配置优化**: 根据系统性能调整配置参数 ## 🤝 贡献 欢迎提交Issue和Pull Request来改进这个流水线! ## 📄 许可证 本项目采用MIT许可证。