正文
通过
SonarQube 搭建代码质量管理平台(一)
的介绍,如果每次都需要手动执行 sonar-scanner ,想想也是醉了,所以我们需要进一步完善 SonarQube 进行自动化代码分析。
从官方文档的
Scanners
部分可以看出,Scanner 支持 MSBuild、Maven、Gradle、Ant、Jenkins 等。本文将介绍使用 Jenkins 进行自动化代码分析, 测试项目的代码基于 .NET 开发,所以会用到 MSBuild 相关命令。
安装 Jenkins
根据操作系统
下载 Jenkins
,我使用的是 Windows ,直接都下一步就可以了。
Windows 环境下 Jenkins 安装后默认登录身份是 “本地系统”,会无法访问,所以需要修改登录身份,我这里使用的是账户方式
启动成功后访问
http://localhost:8080/
Jenkins 配置 Github
-
在 Github 生成 Personal access tokens,设置 token 相关权限
-
Jenkins 配置 GitHub Server
Jenkins 安装后默认已包含 GitHub,在 “系统管理” => “系统设置” 中找到 Github,然后在 Credentials 处添加全局凭据,类型选 Secret text,Secret 处输入上一步生成的 access token
添加完成后可点击 Test connection 进行测试
如果使用的是 Gitlab,需要在 Jenkins 中安装 Gitlab 插件,全局凭据添加 GitLab API token,token 使用 Gitlab Account 下的 Private token, 其他配置基本类似
Jenkins 配置 SonarQube
-
在 SonarQube 中生成 Server authentication token
登录 SonarQube 后,在 “My Account” => “Securiy” 中生成 toekn
重新进入这个页面之前生成的 token 就看不到的,只能看到一次,我呵呵
-
在 Jenkins 的管理插件中安装 SonarQube Scanner 插件
-
配置 SonarQube Sever,这部分和配置 GitHub Server 类似,在 “系统管理” => “系统设置” 中找到 SonarQube servers
Name
:随意;
Server URL
:为启动的 SonarQube 服务地址,我这里使用本地启动的默认地址
http://localhost:9000
;
Server authentication token
: 输入之前生成的 token;
-
配置 SonarScanner for MSBuild
在 “系统管理” => “全局工具配置” 找到 SonarScanner for MSBuild(
测试项目是基于 .NET
),官方提供了
.NET Framework 和 .NET Core
两个版本,我们可以先都加上,之后根据实际项目选择使用哪个。有两中方式配置
MSBUILD_SQ_SCANNER_HOME,可以选择自动安装或手动配置,手动配置需要单独下载,我使用的是手动配置方式
Jenkins 任务配置
上面是 Jenkins 的一些全局配置,下面需要对单个任务进行配置。新建一个 “构建一个自由风格的软件项目” 类型的任务 “Test”
配置项目的仓库地址,这个项目就是要进行代码分析的项目,在 Credentials 处添加凭据,这里添加一个用户名密码类型的凭据(
其他类型的也可以,能访问这个仓库即可
)。在添加凭据后,会自动检测是否有效,如果无效会直接出现错误提示
在 “构建” 中增加构建步骤:
-
SonarScanner for MSBuild - Begin Analysis
SonarScanner for MSBuild
:选择基于 .NET Framework,因为 Test 项目是基于 .NET Framework;
Project key
: 在 SoanrQube 中的项目 key;
Project name
:在 SoanrQube 显示的项目名称,如果不填,则显示 Project key;
Project version
:版本号;
Additional arguments
:其他参数,比如可以设置只检测某种语言(/d:sonar.language=cs)、排除哪些文件(夹)
等,
参考
;