中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

關于SonarQube社區版使用問題有哪些

發布時間:2021-10-20 14:12:09 來源:億速云 閱讀:136 作者:iii 欄目:web開發

本篇內容主要講解“關于SonarQube社區版使用問題有哪些”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“關于SonarQube社區版使用問題有哪些”吧!

 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)參考如下:

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的授權配置

  • 用戶首先登陸SonarQube平臺(我們做了GitlabSSO/LDAP集成)

  • 根據不同的業務組對應創建一個group

  • 然后將用戶加入到對應的group中

  • 根據業務的簡稱創建對應的權限模板

  • 將組和管理員加入權限模板中

  • 然后將該業務的項目批量應用權限模板

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

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

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

到此,相信大家對“關于SonarQube社區版使用問題有哪些”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

延吉市| 雷州市| 濮阳县| 专栏| 焦作市| 竹山县| 错那县| 秭归县| 鹤山市| 彩票| 都江堰市| 黑河市| 象山县| 时尚| 灌南县| 三亚市| 安图县| 饶平县| 兴化市| 星子县| 县级市| 宽城| 富阳市| 肃宁县| 金平| 香港| 东乡族自治县| 教育| 兴海县| 仲巴县| 顺昌县| 正蓝旗| 盐源县| 新乡市| 阳曲县| 甘洛县| 伊春市| 全州县| 丰台区| 西华县| 志丹县|