SonarSource 的產(chǎn)品和服務(wù)被世界各地的客戶所使用。所有規(guī)模的組織都在使用來自 SonarSource 的產(chǎn)品和服務(wù)提高生產(chǎn)率, 降低風(fēng)險, 終開發(fā)更好的軟件。SonarQube 在歐洲的三不同地點(diǎn)的開發(fā)團(tuán)隊(duì)每天都在使用。質(zhì)量結(jié)果顯示在墻上顯示器!Kapsch TrafficCom (理事會) 是智能交通系統(tǒng)的提供商。它的系統(tǒng)采用信息和通信技術(shù)來支持和優(yōu)化公路運(yùn)輸, 包括基礎(chǔ)設(shè)施、車輛、用戶和工業(yè)。它在各種交通應(yīng)用領(lǐng)域的解決方案有助于減少道路交通造成的擁堵和環(huán)境污染, 提高交通安全和安全。理事會集團(tuán)在33國家設(shè)有子公司和代表處, 并有3000多名員工。軟件質(zhì)量很重要, 因?yàn)?Kapsch 需要向其客戶提供jia的軟件解決方案, 同時遵循行業(yè)標(biāo)準(zhǔn), 如汽車行業(yè)的 MISRA 準(zhǔn)則。即將失去對軟件質(zhì)量的關(guān)注
Kapsch TrafficCom 因快速擴(kuò)張而失去了對軟件質(zhì)量的關(guān)注。這種擴(kuò)展導(dǎo)致了一些新的編程語言的使用, 并雇用了許多新的開發(fā)人員。理事會預(yù)見到需要更好地控制, 遵循編碼準(zhǔn)則, 并確保它開發(fā)的應(yīng)用程序在發(fā)布之前達(dá)到了定義的質(zhì)量目標(biāo)。此外, 技術(shù)債務(wù)的趨勢需要更加明顯, 以幫助決策者達(dá)成關(guān)于重構(gòu)與引入新特性的知情決策。由于理事會在靜態(tài)代碼分析中使用了幾種不同的解決方案, 因此很難同時將整個代碼庫的這一概述放在一起。SonARQUBE 的自下而上采用
然后, 瑞典理事會辦公室的開發(fā)者遇到了 SonarQube。這一收養(yǎng)初是由管理層和其他理事會的開發(fā)網(wǎng)站所采納的自下而上的方法。在年內(nèi), 它將被采用在更多的地點(diǎn), 并作為理事會的主要解決方案, 跟蹤代碼質(zhì)量。在這一收養(yǎng)中, 關(guān)鍵是 SonarQube 使用相同的度量標(biāo)準(zhǔn)來衡量每種語言。理事會使用幾種不同的語言, 現(xiàn)在它們都可以以統(tǒng)一的方式呈現(xiàn)。可以很容易地看到當(dāng)前的度量狀態(tài), 以及它們是否在正確的方向上移動。此外, 項(xiàng)目組合管理 (視圖) 插件允許理事會從多語言應(yīng)用程序中聚合質(zhì)量度量, 將每個應(yīng)用程序的質(zhì)量統(tǒng)一起來, 并將應(yīng)用程序進(jìn)一步聚合到產(chǎn)品、項(xiàng)目和部門質(zhì)量的統(tǒng)一演示中。更美好的是, "由于我們每夜都在分析我們的大部分產(chǎn)品, 所以現(xiàn)在每個人都可以按需獲取xin的結(jié)果 (在每個聚合級別)", 瑞典理事會的測試組長約翰 Esbj?rner 說。Kapsch TrafficCom 使用的主要功能包括:時間機(jī)器-跟蹤關(guān)鍵代碼質(zhì)量度量的進(jìn)度。視圖-將多種語言聚合到產(chǎn)品/項(xiàng)目/部門中。差異視圖-檢查遺留項(xiàng)目中是否引入了新問題。Java API-創(chuàng)建自己的集成插件, 因?yàn)樗呀?jīng)做了寶麗來 ALM。SonARQUBE 結(jié)果顯示在墻上顯示器上
SonarQube 目前正被用于檢查超過30應(yīng)用程序和700k 代碼行的代碼質(zhì)量, 并且這些數(shù)字預(yù)計(jì)會隨著全年的采用而不斷增加。它每天都被開發(fā)團(tuán)隊(duì)使用, 它們遍布?xì)W洲三不同的開發(fā)站點(diǎn)。Esbj?rner 表示, "我們可以利用我們現(xiàn)有的詹金斯基礎(chǔ)結(jié)構(gòu)來觸發(fā)靜態(tài)分析, 從而緩解了向 SonarQube 的過渡, 因此無需額外的服務(wù)器。讓所有利益相關(guān)者通過 web 瀏覽器輕松地訪問結(jié)果, 并顯示在人們走過的墻壁監(jiān)視器上, 從而提高了對代碼質(zhì)量的認(rèn)識。這些指標(biāo)已成為一種幫助, 以可視化需要做什么。早些時候, 開發(fā)人員知道代碼需要重構(gòu), 但是很難得到標(biāo)準(zhǔn)的數(shù)據(jù)來向決策者展示。現(xiàn)在, 他們可以通過打開 web 瀏覽器并顯示度量和代碼來做到這一點(diǎn)。今天, 質(zhì)量門是為所有語言定義的, 因此新功能并不總能戰(zhàn)勝重構(gòu)。在發(fā)布前始終滿足di質(zhì)量級別要求。
代碼質(zhì)量是一個不斷增長的市場, 它是分析師對其大規(guī)模采用和大量投資回報(bào)的雷達(dá)。
認(rèn)知的復(fù)雜性提供了一個新的衡量如何硬編碼是理解-一個罷工開發(fā)商的直覺正確的。下載白皮書本文描述了認(rèn)知的復(fù)雜性, 提出了一種新的度量方法, 以更準(zhǔn)確地測量法的相對理解。在這樣做的時候, 它解決了這個領(lǐng)域中圈復(fù)雜度的缺點(diǎn)。圈復(fù)雜度使用數(shù)學(xué)模型來評估方法, 對測試所需的工作量進(jìn)行精que測量, 但不準(zhǔn)確地測量需要了解它們的工作量。認(rèn)知的復(fù)雜性打破了使用數(shù)學(xué)模型評估軟件可維護(hù)性的實(shí)踐。它從由圈復(fù)雜度所設(shè)置的先例開始, 但使用人工判斷來評估結(jié)構(gòu)應(yīng)如何計(jì)算, 并決定應(yīng)將哪些內(nèi)容添加到整個模型中。結(jié)果是, 它產(chǎn)生了方法復(fù)雜性評分, 使程序員對可維護(hù)性的相對評估比以前的模型更公平。
Ansible SonarQube 升級的角色
你可能知道, 并希望使用 SonarQube。這是一個偉大的工具, 是積極的發(fā)展和改善。這是偉大的, 如果你是一個開發(fā)使用 SonarQube。但是, 如果您碰巧管理 SonarQube 實(shí)例, 則由于升級指南由11步驟組成, 因此不斷升級非常麻煩。
停止舊的 SonarQube 服務(wù)器
下載并解壓新的 SonarQube 分布在一個新鮮的目錄, 讓我們說 NEW_SONARQUBE_HOME
使用默認(rèn)的 H2 數(shù)據(jù)庫啟動它, 并使用更新中心安裝您需要的插件
手動安裝任何自定義插件
停止新服務(wù)器
更新聲納的內(nèi)容. 屬性和包裝. 配置文件位于 NEW_SONARQUBE_HOME/配置目錄中, 其內(nèi)容與 OLD_SONARQUBE_HOME/配置目錄中的相關(guān)文件 (web 服務(wù)器 URL、數(shù)據(jù)庫設(shè)置等) 有關(guān)。不復(fù)制-粘貼舊文件
如果使用了自定義 JDBC 驅(qū)動程序, 請將其復(fù)制到 NEW_SONARQUBE_HOME/擴(kuò)展/jdbc 驅(qū)動程序/<dialect>
備份數(shù)據(jù)庫
刪除數(shù)據(jù)/es 目錄
啟動新的 web 服務(wù)器
復(fù)制 http://localhost:9000/setup (用您自己的 URL 替換 "localhost:9000") 來瀏覽并按照安裝說明進(jìn)行操作
這是一個太多的步驟, 手動執(zhí)行。因此, 我決定通過為它編寫一個 Ansible 的角色來實(shí)現(xiàn)自動化。
初始設(shè)置
在我開始編寫 Ansible 劇本之前, 我需要找到一種方法來測試我的代碼。所以我開始與流浪漢旋轉(zhuǎn)了一個虛擬機(jī), 并提供了一個簡單的腳本。這是需要有類似的環(huán)境, 以我們的實(shí)際 SonarQube 生產(chǎn)實(shí)例。我能夠增量地構(gòu)建我的 Ansible 劇本并在這個 VM 上測試它。很快我就明白了, 與流浪漢一起工作會減慢我的速度, 因?yàn)槲倚枰刂铆h(huán)境, 而不是初的預(yù)期。所以我決定考慮泊塢窗。
用于測試的泊塢窗
我找到了正式的 SonarQube 泊塢窗圖像, 但無法使用, 因?yàn)槲覀兊?SonarQube 實(shí)例安裝在 CentOS 和官fang圖像使用不同的基礎(chǔ)圖像。另外, 我需要自定義特定的 SonarQube 版本我想開始。因此, 我創(chuàng)建了我們自己的 Dockerfile 與 CentOS 6 基地和 Ansible 安裝。
此泊塢窗映像不需要啟動 SonarQube, 因?yàn)槲抑皇窍腧?yàn)證是否進(jìn)行了正確的文件更改, 而我的 Ansible 手冊沒有錯誤。升級的第yi步之一就是關(guān)閉服務(wù)器。
我將我的劇本裝入容器, 并在該容器內(nèi)運(yùn)行 Ansible, 對該本地環(huán)境進(jìn)行了更改。
當(dāng)前腳本的路徑
TESTS_DIR = $ (cd "$ (dirname" $ {BASH_SOURCE [0]} ")" & & 密碼 "
# 命令測試劇本
TEST_COMMAND = "cd/行動 & & ansible-劇本 $ @
-我 ' 本地主機(jī) '-c
升級-聲納 database.yml "
# 運(yùn)行容器安裝行動為卷
泊塢 run-v "$ TESTS_DIR/.。/行動/:/行動 "
"聲納-升級-測試"/"垃圾/bash-c" $ {TEST_COMMAND} "
在泊塢窗中運(yùn)行我的劇本大大減少了反饋回路, 所以我決定泊塢窗是走的路。你可以看看我所有的腳本在 GitHub
Ansible 角色
我一步一步地往前走, 我到達(dá)了一個點(diǎn), 一切似乎都在工作, 我有一個非常有用的 Ansible 的角色在我的手中。它尚未發(fā)布到 Ansible Galaxy, 但您可以在 GitHub 的 SonarQube 升級 Ansible 角色項(xiàng)目下找到源文件和文檔。
當(dāng)前 Ansible 角色通過在當(dāng)前位置旁邊創(chuàng)建新安裝來升級 SonarQube。這提供了回滾的方法 (如果需要)。
此時, 角色執(zhí)行以下任務(wù):
確保特定的根用戶存在于聲納安裝
在所有安裝所在的目錄中創(chuàng)建聲納. sh
確保 SonarQube 服務(wù)存在
停止 SonarQube
下載新版本
備份數(shù)據(jù)庫
下載和安裝插件
將自定義配置應(yīng)用于新實(shí)例
確保刪除數(shù)據(jù)/es
重新 SonarQube 服務(wù)啟動新版本
開始 SonarQube
手動步驟
這個過程仍然需要幾個手動步驟。
在運(yùn)行升級手冊之前, 應(yīng)手動確保在升級過程中要安裝的插件列表是xin的。您可以從 SonarQube 的管理視圖中獲得xin支持的版本號。
根據(jù) SonarQube 的建議, 此 Ansible 角色不僅復(fù)制以前安裝的配置, 而且使用帶有變量的模板來為新實(shí)例創(chuàng)建配置。這意味著在執(zhí)行升級之前, 開發(fā)人員可以將模板和基本配置與新的 SonarQube 下載進(jìn)行比較。雖然這是一個手動步驟, 但與以前的操作相比, 它更容易, 因?yàn)榭梢允褂?IDE 而不僅僅是從命令行中的 diff 工具進(jìn)行比較。
這兩個步驟都需要后續(xù)的手動升級, 我認(rèn)為這些升級準(zhǔn)備活動。
使用SonarQube進(jìn)行PL / SQL分析 - 配置
發(fā)表評論
SonarQubePLSQL2在這個關(guān)于使用SonarQube分析PL / SQL代碼的新系列的第yi篇文章中,我們看到了如何組織我的分析環(huán)境:
一個文件夾C: SRC 與我所有的項(xiàng)目,
于每個項(xiàng)目的子目錄,
不同的其他子目錄,包括一個'.. Source',其中包含要分析的源代碼。
在我們的PL / SQL分析的情況下,這將被放在文件夾'C: SRC Demo PLSQL Source'中。
讓我們看看如何用Jenkins來創(chuàng)建和配置SonarQube這個代碼的分析。繼續(xù)閱讀→
Jean-Pierre FAYOLLE于2013年12月27日發(fā)布了SonarQube - PL / SQL。
使用SonarQube - 組織進(jìn)行PL / SQL分析
發(fā)表評論
SonarQubePLSQL1現(xiàn)在我更新了我的源代碼分析環(huán)境,隨著SonarQube或SonarQube-Runner和Jenkins的升級,時間已經(jīng)到來更新了一個應(yīng)用和演示的存儲庫。繼續(xù)閱讀→
此條目發(fā)布于2013年12月22日由Jean-Pierre FAYOLLE發(fā)行的SonarQube - PL / SQL。