成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

關于SonarQube社區版使用問題及解決方法

開發 前端
今天我們解決SonarQube社區版常用的幾個問題,當然還有可能還會有很多問題待解決。

[[375327]]

 1 簡介

在大規模使用SonarQube平臺對代碼進行掃描時可能會遇到以下幾個問題

  • SonarQube平臺數據問題(開源版本不支持不同分支)
  • SonarQube掃描規則問題(當配置了默認規則后新建項目如何指定新規則呢?)
  • SonarQube項目授權問題(新生產的項目如何配置權限?)

2 解決SonarQube平臺數據問題

當我們在大規模使用SonarQube進行代碼質量檢查的時候,我們需要讓開發人員每次都能看到當前特性分支的掃描分析數據,以盡快解決有問題的代碼,提高代碼的質量。開源版本會帶來一些問題,因為不支持一個項目多分支的形式,所以我們按照特性分支的名稱來生成相對應的掃描項目。(會產生很多Sonarqube項目)

例如: 服務名稱是 demo-abcd-service

之前我們的做法是不區分分支,在掃描所有分支的時候都會指定同一個sonar項目。這就是導致SonarQube平臺此項目數據不穩定的根本原因。

現在的做法是: 假如這個項目有F1,F2等特性分支,在每次對其中特性分支構建掃描時會配置sonar掃描參數(projectName)為 “當前的服務名稱_特性分支名稱”,這樣相當于每個特性分支都對應一個掃描項目,數據就不會出現問題了。

雖然解決了數據不穩定的問題,但又間接的帶來了一些問題。

  • 每個特性分支生成一個項目,假如特性分支被刪除呢?或者分支很多呢?
  • 對于SonarQube管理員來說很難管理,增加了任務負擔。

總結一下如何解決問題呢?

  • 從長遠角度來說最直接的方式當然是購買開發版本 。
  • 現在SonarQube已經具有多分支插件了,親測可以使用。
  • 變更代碼掃描的模式,比如將每次特性分支掃描的數據關聯到提交的commit信息中。

總之,最簡單的方式就是付費購買開發版、企業版。小型團隊也可以使用生成多項目的方式管理。

3 解決SonarQube掃描規則問題

在搭建好SonarQube平臺后,已經配置好了針對每種語言的"Sonar Way"質量配置。我們在大規模使用中,對掃描Java項目的規則做了一些定制,有一些新增的規則還有一部分棄用的規則,總之大部分還都是默認自帶的java規則,配置好規則后并設置為默認的規則。其中有幾十個團隊在用默認的規則,后來個別團隊因需求要使用新的JAVA項目質量。如何為新建的項目自動配置好對應的質量呢?

分析

  • SonarQube平臺中的項目不需要單獨的新建,而是通過Jenkins構建過程中生成。
  • 當我們需要為項目指定新的質量配置的時候,通常在Sonar WebUi中進行配置。
  • 無法通過"-Dsonar.xxxx"方式指定每次分支時使用的質量名稱。

應對

  • 由于SonarQube項目都是通過流水線掃描后生成的,于是在流水線中增加步驟。
  • 每次掃描之前先判斷項目是否存在,然后指定新的質量,再執行代碼掃描。

實施主要通過RESTAPI完成

  • 創建項目:api/projects/create
  • 更新質量:api/qualityprofiles/add_project
  • 查找項目:api/projects/search

JenkinsFile(ShareLibrary)參考如下:

  1. package com.devops 
  2.  
  3. //Http req  使用Jenkins插件封裝的方法 哈哈哈 
  4. def HttpReq(reqType,reqUrl,reqBody){ 
  5.     result = httpRequest authentication: '我的憑據的ID'
  6.                 httpMode: reqType,  
  7.                 contentType: "APPLICATION_JSON"
  8.                 consoleLogResponseBody: true
  9.                 ignoreSslErrors: true,  
  10.                 requestBody: reqBody, 
  11.                 //responseHandle: 'NONE',  
  12.                 url: reqUrl 
  13.                 //quiet: true 
  14.      
  15.     return result 
  16.  
  17. //查找項目 
  18. def SearchProject(projectName){ 
  19.     apiUrl = "http://我的sonar服務器地址/api/projects/search?projects=${projectName}" 
  20.     resultInfo = HttpReq("GET",apiUrl,''
  21.  
  22.     def result = readJSON text: """${resultInfo.content}""" 
  23.      
  24.     if (result["paging"]["total"] == 0 ){ 
  25.         return "false" 
  26.     } else { 
  27.         return result 
  28.     } 
  29.  
  30. //創建項目 
  31. def CreateProject(projectName){ 
  32.     apiUrl = "http://我的sonar服務器地址/api/projects/create?name=${projectName}&project=${projectName}" 
  33.     resultInfo = HttpReq("POST",apiUrl,''
  34.  
  35. //更新語言規則集 
  36. def UpdateQuality(language,qualityProfile,projectName){ 
  37.     apiUrl = "http://我的sonar服務器地址/api/qualityprofiles/add_project?language=${language}&qualityProfile=${qualityProfile}&project=${projectName}" 
  38.     resultInfo = HttpReq("POST",apiUrl,''
  39.  
  40.  
  41. //項目授權 
  42. def ApplyTemplate(projectKey,templateName){ 
  43.     apiUrl = "http://我的sonar服務器地址/api/permissions/apply_template?projectKey=${projectName}&templateName=${templateName}" 
  44.     resultInfo = HttpReq("POST",apiUrl,''

4 SonarQube項目授權問題

我們在前面解決了SonarQube掃描前的一些問題,現在開始解決授權問題。

Sonarqube的授權配置

  • 用戶首先登陸SonarQube平臺(我們做了GitlabSSO/LDAP集成)
  • 根據不同的業務組對應創建一個group
  • 然后將用戶加入到對應的group中
  • 根據業務的簡稱創建對應的權限模板
  • 將組和管理員加入權限模板中
  • 然后將該業務的項目批量應用權限模板

親測: 新生成的項目還需要再應用權限模板后才能使對應的項目組成員訪問。

解決:在項目掃描后,調用接口對當前項目應用對應的權限模板。

  • 項目授權(應用權限模板):api/permissions/apply_template

請參考👆問題解決中的Jenkinsfile文件。

5 總結

今天我們解決了常用的幾個問題,當然還有可能還會有很多問題待解決。總結一下我們解決問題的思路。

我們將Jenkins和SonarQube做了集成,通過API能夠滿足我們的需求。

我們也可以在Jenkins上面創建一個項目,比如用戶Sonar項目授權等等。

 

責任編輯:姜華 來源: DevOps云學堂
相關推薦

2009-07-01 18:14:36

JSP亂碼

2010-08-31 13:49:12

CSS

2022-04-02 20:27:30

ETS操作系統鴻蒙

2011-12-02 14:00:21

JavaOOM

2011-08-24 17:41:16

MySQL死鎖

2011-05-06 17:25:58

硒鼓

2021-06-17 08:07:35

Linux 內存站崗

2010-06-09 09:39:42

Opensuse雙系統

2016-11-14 10:06:04

大數據max位圖

2009-03-04 10:38:36

Troubleshoo桌面虛擬化Xendesktop

2018-11-01 15:26:38

開源軟件安全

2019-10-11 19:45:28

SparkSQLHiveHadoop

2025-04-07 07:20:35

SQL慢查詢性能

2017-06-14 22:11:57

數據庫MySQL死鎖

2010-12-27 10:48:10

VirtualboxFreedos

2022-04-06 10:09:17

云服務云計算

2009-08-24 10:37:11

Silverlight

2010-05-11 15:09:51

Unix系統

2010-05-31 14:29:20

Cacti中文

2009-02-18 10:25:00

IPv6部署
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91九色视频在线 | 国产一区二区自拍 | 欧美成年网站 | 欧美日韩在线国产 | 国产精品a久久久久 | 免费观看色 | 国产精品片aa在线观看 | 亚洲精品国产综合区久久久久久久 | 国产精品久久久久久久免费大片 | 看av片网站 | 日韩有码一区 | 免费视频成人国产精品网站 | 欧美视频一区二区三区 | 日韩在线精品视频 | 日本爱爱视频 | 香蕉二区 | 欧美三级久久久 | 午夜精品久久 | 午夜视频在线播放 | 日本不卡高清视频 | 国产精品一区二区三区在线 | 精品国产一区二区三区日日嗨 | 精品视频一区二区在线观看 | 亚洲电影免费 | 黄网站涩免费蜜桃网站 | 99一级毛片 | 欧美综合国产精品久久丁香 | 国产午夜精品一区二区三区嫩草 | 日本不卡一区二区三区在线观看 | 91一区 | 欧美美女爱爱 | av影音资源| 国产精品久久久亚洲 | 欧美aaa| 狠狠天天| 丁香五月网久久综合 | 国产精品毛片一区二区三区 | 亚洲欧洲日韩精品 中文字幕 | 国产精品福利网站 | 97国产精品视频人人做人人爱 | 一区二区三区四区不卡 |