在Gradle中添加Dependency Check,以及在Sonar中查看报告
前言
在项目中需要引入dependency check的工具来扫描相关依赖的库是否有安全漏洞等问题。由于是使用Gradle作为依赖构建工具,以及kotlin作为开发语言,所以选择了owasp dependency check的Gradle插件的方式。最后需要将报告上传到sonar进行展示。
工具
- Gradle 6.4.1
- org.owasp.dependencycheck
- sonarqube
流程
引入依赖
在build.gradle.kts中添加相关的依赖:
1 | id("org.owasp.dependencycheck") version "5.3.2.1" |
添加Sonar配置项
在sonar的配置项中添加dependency check报告的路径:
1 | # dependency check reporting |
添加Sonar的dependency check插件
在sonar中选择Administration的tab,进入Marketplace。在Plugins中搜索并安装如图的插件:
添加Jenkins Task
项目中使用了Jenkins作为CI构建工具,所以需要在其中添加一个stage用于将dependency check report上传到sonar中。如下:
1 | stage('DEPENDENCY CHECK') { |
由于dependency check并不是每次跑pipeline都需要,所以通过timeout+input的方式来手动run这一个stage。当跑完./gradlew dependencyCheckAnalyze后就会生成相关的report文档,默认是html格式,可以通过配置修改。
当dependency check跑完之后,就应该执行./gradlew sonarqube命令将本地report上传到sonarqube来分析。sonar的host.url和login参数既可以配置在sonar对应的properties,也可以在run命令的时候传入。这里是因为将creds配置到了Jenkins中,所以在Jenkins file中通过获取凭证的方式来配置。
成果
当Jenkins CI跑完Sonar Analysis后,就可以去Sonar上查看对应的dependency check的report。如图