顯示SonarQube私有項(xiàng)目徽章方案流程
背景
sonarQube 目前不支持私有項(xiàng)目的徽章圖片獲取,這個(gè)問(wèn)題早在 2018 年就在 sonar 社區(qū)里有過(guò)激烈的討論。后面 sonar 官方也關(guān)注到了這個(gè)需求的必要性,也著手排期在做了。但是從 2020年2月份創(chuàng)建好了項(xiàng)目計(jì)劃后,到現(xiàn)在一年過(guò)去了,還沒(méi)有任何的動(dòng)靜,所以不等官方的版本計(jì)劃了,只能自己尋求一種可以快速實(shí)施的方案
- 社區(qū)討論:https://community.sonarsource.com/t/badges-on-private-projects/4894
- 官方排期實(shí)現(xiàn)計(jì)劃:https://jira.sonarsource.com/browse/MMF-1942
SonarQube 架構(gòu)簡(jiǎn)介
先簡(jiǎn)單了解下 sonar 的運(yùn)行機(jī)制。如圖,運(yùn)行 SonarQube app,其實(shí)同時(shí)運(yùn)行了4 個(gè)進(jìn)程,app 進(jìn)程負(fù)責(zé)統(tǒng)籌調(diào)度其他三個(gè)進(jìn)程,當(dāng)有插件安裝需要重新加載時(shí), app 就可以發(fā)出重啟的指令。下面是詳細(xì)的描述:
- App Process:用戶操作的進(jìn)程,這個(gè)進(jìn)程是門面,由用戶控制開(kāi)啟或者關(guān)閉。同時(shí)也是其他三個(gè)進(jìn)程的調(diào)度器,開(kāi)啟 app 后,會(huì)自動(dòng)啟動(dòng) Es、web、ce 等進(jìn)程。
- Es Process:ElasticSearch 的進(jìn)程,Sonar 將 Es 的發(fā)行包內(nèi)置到了Sonar 中,作為獨(dú)享的搜索引擎使用,issue ,代碼等數(shù)據(jù)會(huì)被 es 管理起來(lái)。
- Web Process:web 頁(yè)面 、api 的進(jìn)程
- Ce Process:ce 全稱 Compute Engine 。分析計(jì)算引擎,是 sonar 的核心
分析徽章的生成
如下,是一個(gè)獲取 bugs徽章的鏈接,我們從這個(gè)鏈接開(kāi)始,深入分析下,在 sonar 服務(wù)的內(nèi)部是怎么生成這個(gè)徽章的。在分析前,先說(shuō)明下,sonar 內(nèi)部沒(méi)有采用 spring mvc 等任何web 框架,是自己封裝的一套mvc框架,數(shù)據(jù)庫(kù)查詢用的 mybatis。
https://qa-sonar.dev.com/api/project_badges/measure
project=server_services_developer_AXaIXEx52AMDJFWZUd_4&metric=bugs
根據(jù)徽章資源的 /api/project_badges 找到徽章的web入口文件 ProjectBadgesService.java ,可以看到接口支持的入?yún)⑶闆r。通過(guò) action 模塊名 measure 找到 MeasureAction.java ,生成徽章的主要邏輯都在這個(gè)里面,所在模塊的目錄結(jié)構(gòu)如下:
從這里得知,通過(guò)徽章鏈接獲取到的 svg 圖片,是通過(guò) project_Id 實(shí)時(shí)查出來(lái)數(shù)據(jù),實(shí)時(shí)生成的圖片。并不是每次掃描都會(huì)生成靜態(tài)圖片資源。也在這個(gè)模塊里找到了私有項(xiàng)目無(wú)法生成代碼的邏輯。
實(shí)施方案
1、改社區(qū)代碼去掉私有的限制
這個(gè)是最簡(jiǎn)單的,但是限制也比較多。改了代碼需要自己發(fā)版,功能沒(méi)法和社區(qū)同步。而且如果你使用的是付費(fèi)的,這個(gè)路也行不通。
2、新建一個(gè)項(xiàng)目,自己生成 svg
嘗試獲取 sonar 的所有元數(shù)據(jù)信息,然后自己生成 svg 徽章,在 url 設(shè)計(jì)上,盡量保持和 sonar 自己的風(fēng)格保持一致,用法也一樣。生成的徽章的風(fēng)格也保持一致
結(jié)語(yǔ)
最后準(zhǔn)備采用方案二,新建專門處理 sonar徽章的項(xiàng)目,實(shí)施過(guò)程就不在詳細(xì)說(shuō)明了。sonarqube 私有項(xiàng)目徽章獲取顯示,是一個(gè)社區(qū)眾望所期的功能。所以如果這個(gè)方案最后成功實(shí)施的話,項(xiàng)目也會(huì)在 github 開(kāi)源出來(lái),敬請(qǐng)期待
以上就是顯示SonarQube私有項(xiàng)目徽章方案流程的詳細(xì)內(nèi)容,更多關(guān)于SonarQube私有項(xiàng)目徽章顯示的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
spring中的@Value讀取配置文件的細(xì)節(jié)處理過(guò)程
這篇文章主要介紹了spring中的@Value讀取配置文件的細(xì)節(jié)處理過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09Spring中@EnableScheduling實(shí)現(xiàn)定時(shí)任務(wù)代碼實(shí)例
這篇文章主要介紹了Spring中@EnableScheduling實(shí)現(xiàn)定時(shí)任務(wù)代碼實(shí)例,@EnableScheduling 注解開(kāi)啟定時(shí)任務(wù)功能,可以將多個(gè)方法寫在一個(gè)類,也可以分多個(gè)類寫,當(dāng)然也可以將方法直接寫在上面ScheddulConfig類中,需要的朋友可以參考下2024-01-01Java中Json與List、Map、entity的互相轉(zhuǎn)化
在開(kāi)發(fā)中,Json轉(zhuǎn)換的場(chǎng)景往往也就是那么幾個(gè),本文主要介紹了Java中Json與List、Map、entity的互相轉(zhuǎn)化,具有一定的參考價(jià)值,感興趣的可以了解一下2022-07-07Dubbo3和Spring?Boot整合過(guò)程源碼解析
Dubbo首先是提供了一個(gè)單獨(dú)的模塊來(lái)和Spring Boot做整合,利用 Spring Boot自動(dòng)裝配的功能,配置了一堆自動(dòng)裝配的組件,本文介紹Dubbo3和Spring?Boot整合過(guò)程,需要的朋友一起看看吧2023-08-08如何使用@Value和@PropertySource注入外部資源
這篇文章主要介紹了如何使用@Value和@PropertySource注入外部資源的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06Java?實(shí)現(xiàn)使用Comparable按照我們指定的規(guī)則排序
這篇文章主要介紹了Java?如何使用Comparable按照我們指定的規(guī)則排序,通過(guò)練習(xí)創(chuàng)建TreeSet集合使用無(wú)參構(gòu)造方法,并按照年齡從小到大的順序排序,若年齡相同再按照姓名的字母順序排序展開(kāi)內(nèi)容,需要的朋友可以參考一下2022-04-04CompletableFuture并行處理List分批數(shù)據(jù)demo
這篇文章主要介紹了CompletableFuture并行處理List分批數(shù)據(jù)實(shí)現(xiàn)實(shí)例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11Java實(shí)現(xiàn)讀取resources目錄下的文件路徑的九種方式
本文主要介紹了Java實(shí)現(xiàn)讀取resources目錄下的文件路徑的九種方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04