1 简介
在大规模使用SonarQube平台对代码进行扫描时可能会遇到以下几个问题
2 解决SonarQube平台数据问题
当我们在大规模使用SonarQube进行代码质量检查的时候,我们需要让开发人员每次都能看到当前特性分支的扫描分析数据,以尽快解决有问题的代码,提高代码的质量。开源版本会带来一些问题,因为不支持一个项目多分支的形式,所以我们按照特性分支的名称来生成相对应的扫描项目。(会产生很多Sonarqube项目)
例如: 服务名称是 demo-abcd-service
之前我们的做法是不区分分支,在扫描所有分支的时候都会指定同一个sonar项目。这就是导致SonarQube平台此项目数据不稳定的根本原因。
现在的做法是: 假如这个项目有F1,F2等特性分支,在每次对其中特性分支构建扫描时会配置sonar扫描参数(projectName)为 “当前的服务名称_特性分支名称”,这样相当于每个特性分支都对应一个扫描项目,数据就不会出现问题了。
虽然解决了数据不稳定的问题,但又间接的带来了一些问题。
总结一下如何解决问题呢?
总之,最简单的方式就是付费购买开发版、企业版。小型团队也可以使用生成多项目的方式管理。
3 解决SonarQube扫描规则问题
在搭建好SonarQube平台后,已经配置好了针对每种语言的"Sonar Way"质量配置。我们在大规模使用中,对扫描Java项目的规则做了一些定制,有一些新增的规则还有一部分弃用的规则,总之大部分还都是默认自带的java规则,配置好规则后并设置为默认的规则。其中有几十个团队在用默认的规则,后来个别团队因需求要使用新的JAVA项目质量。如何为新建的项目自动配置好对应的质量呢?
分析
应对
实施主要通过RESTAPI完成
JenkinsFile(ShareLibrary)参考如下:
- package com.devops
- //Http req 使用Jenkins插件封装的方法 哈哈哈
- def HttpReq(reqType,reqUrl,reqBody){
- result = httpRequest authentication: '我的凭据的ID',
- httpMode: reqType,
- contentType: "APPLICATION_JSON",
- consoleLogResponseBody: true,
- ignoreSslErrors: true,
- requestBody: reqBody,
- //responseHandle: 'NONE',
- url: reqUrl
- //quiet: true
- return result
- }
- //查找项目
- def SearchProject(projectName){
- apiUrl = "http://我的sonar服务器地址/api/projects/search?projects=${projectName}"
- resultInfo = HttpReq("GET",apiUrl,'')
- def result = readJSON text: """${resultInfo.content}"""
- if (result["paging"]["total"] == 0 ){
- return "false"
- } else {
- return result
- }
- }
- //创建项目
- def CreateProject(projectName){
- apiUrl = "http://我的sonar服务器地址/api/projects/create?name=${projectName}&project=${projectName}"
- resultInfo = HttpReq("POST",apiUrl,'')
- }
- //更新语言规则集
- def UpdateQuality(language,qualityProfile,projectName){
- apiUrl = "http://我的sonar服务器地址/api/qualityprofiles/add_project?language=${language}&qualityProfile=${qualityProfile}&project=${projectName}"
- resultInfo = HttpReq("POST",apiUrl,'')
- }
- //项目授权
- def ApplyTemplate(projectKey,templateName){
- apiUrl = "http://我的sonar服务器地址/api/permissions/apply_template?projectKey=${projectName}&templateName=${templateName}"
- resultInfo = HttpReq("POST",apiUrl,'')
- }
4 SonarQube项目授权问题
我们在前面解决了SonarQube扫描前的一些问题,现在开始解决授权问题。
Sonarqube的授权配置
亲测: 新生成的项目还需要再应用权限模板后才能使对应的项目组成员访问。
解决:在项目扫描后,调用接口对当前项目应用对应的权限模板。
请参考问题解决中的Jenkinsfile文件。
5 总结
今天我们解决了常用的几个问题,当然还有可能还会有很多问题待解决。总结一下我们解决问题的思路。
我们将Jenkins和SonarQube做了集成,通过API能够满足我们的需求。
我们也可以在Jenkins上面创建一个项目,比如用户Sonar项目授权等等。
当前文章:关于SonarQube社区版使用问题及解决方法
转载来于:http://www.csdahua.cn/qtweb/news34/411234.html
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网