基于SonarQube的自动化代码缺陷检测:WebGoat实战(一)
字数 1136 2025-08-18 11:37:07
基于SonarQube的自动化代码缺陷检测:WebGoat实战教学文档
一、环境准备
1.1 硬件要求
- 推荐使用阿里云ECS实例
- 配置建议:2CPU、8G内存、40G硬盘、2M带宽
- 小技巧:可使用"竞价实例"降低成本
1.2 软件基础
- 已搭建基于SonarQube的自动化安全代码检测平台
- 需要SVN版本控制系统
- 需要Jenkins持续集成工具
- 需要Maven构建工具
二、获取WebGoat源码
2.1 下载源码
- 访问GitHub发布页面:https://github.com/WebGoat/WebGoat/releases
- 下载最新版本的WebGoat 8源码压缩包
2.2 清理测试环境
- 通过SVN更新本地代码库
- 删除原有的HelloWorld测试代码
- 提交删除操作到SVN服务器
三、上传WebGoat源码
- 解压下载的WebGoat 8源码到本地SVN工作目录
- 在根目录上右键选择"SVN Commit"
- 将所有文件上传到SVN服务器
四、配置SonarQube插件
4.1 安装FindBugs插件
- 登录SonarQube控制台:http://ip:9000
- 导航到"配置" > "应用市场"
- 搜索"findbug"插件
- 点击"安装"并等待完成
- 按提示重启SonarQube服务
4.2 配置质量规则
- 找到Java和JSP相关的质量配置
- 将Findbugs设置为"默认"规则集
五、配置Jenkins任务
5.1 创建Maven任务
- 登录Jenkins控制台
- 新建一个Maven项目
5.2 任务配置详情
a. General配置
- 可保留默认项目名称或自定义
b. 源码管理
- 选择SVN作为源码管理工具
- 配置之前上传WebGoat的SVN仓库地址
c. Post Step配置
- 选择"Execute SonarQube Scanner"
- 配置Analysis properties如下:
sonar.projectKey=my:WebGoat # SonarQube UI中显示的名称
sonar.projectName=webgoat
sonar.projectVersion=1.3.12
sonar.sources=.
sonar.java.binaries=.
# sonar.sourceEncoding=UTF-8 # 可选,设置源码编码
六、执行分析
- 保存Jenkins任务配置
- 立即构建项目
- 在Console Output中监控构建过程
- 首次构建时间较长
- 成功完成会显示"success"提示
七、分析检测结果
- 访问SonarQube控制台
- 查看WebGoat项目的分析结果
- 检查识别出的代码缺陷和安全问题
八、后续工作
- 对检测出的缺陷进行深入分析
- 可加入讨论群持续交流(联系作者微信:fantastic103)
- 可邮件索取实验镜像(tangjf10@aliyun.com)
注意事项
- 插件安装可能因网络问题失败,可重试安装
- 确保SonarQube有足够内存运行分析
- 首次分析可能需要较长时间,请耐心等待
致谢
本教学基于以下贡献者的工作:
- 北京理工大学计算机学院计卫星教授
- 研究生高志伟
- "滇峰技术"团队