SonarSource 的產(chǎn)品和服務(wù)被世界各地的客戶所使用。所有規(guī)模的組織都在使用來(lái)自 SonarSource 的產(chǎn)品和服務(wù)提高生產(chǎn)率, 降低風(fēng)險(xiǎn), 終開(kāi)發(fā)更好的軟件。SonarQube 在歐洲的三不同地點(diǎn)的開(kāi)發(fā)團(tuán)隊(duì)每天都在使用。質(zhì)量結(jié)果顯示在墻上顯示器!Kapsch TrafficCom (理事會(huì)) 是智能交通系統(tǒng)的提供商。它的系統(tǒng)采用信息和通信技術(shù)來(lái)支持和優(yōu)化公路運(yùn)輸, 包括基礎(chǔ)設(shè)施、車輛、用戶和工業(yè)。它在各種交通應(yīng)用領(lǐng)域的解決方案有助于減少道路交通造成的擁堵和環(huán)境污染, 提高交通安全和安全。理事會(huì)集團(tuán)在33國(guó)家設(shè)有子公司和代表處, 并有3000多名員工。軟件質(zhì)量很重要, 因?yàn)?Kapsch 需要向其客戶提供jia的軟件解決方案, 同時(shí)遵循行業(yè)標(biāo)準(zhǔn), 如汽車行業(yè)的 MISRA 準(zhǔn)則。即將失去對(duì)軟件質(zhì)量的關(guān)注
Kapsch TrafficCom 因快速擴(kuò)張而失去了對(duì)軟件質(zhì)量的關(guān)注。這種擴(kuò)展導(dǎo)致了一些新的編程語(yǔ)言的使用, 并雇用了許多新的開(kāi)發(fā)人員。理事會(huì)預(yù)見(jiàn)到需要更好地控制, 遵循編碼準(zhǔn)則, 并確保它開(kāi)發(fā)的應(yīng)用程序在發(fā)布之前達(dá)到了定義的質(zhì)量目標(biāo)。此外, 技術(shù)債務(wù)的趨勢(shì)需要更加明顯, 以幫助決策者達(dá)成關(guān)于重構(gòu)與引入新特性的知情決策。由于理事會(huì)在靜態(tài)代碼分析中使用了幾種不同的解決方案, 因此很難同時(shí)將整個(gè)代碼庫(kù)的這一概述放在一起。SonARQUBE 的自下而上采用
然后, 瑞典理事會(huì)辦公室的開(kāi)發(fā)者遇到了 SonarQube。這一收養(yǎng)初是由管理層和其他理事會(huì)的開(kāi)發(fā)網(wǎng)站所采納的自下而上的方法。在年內(nèi), 它將被采用在更多的地點(diǎn), 并作為理事會(huì)的主要解決方案, 跟蹤代碼質(zhì)量。在這一收養(yǎng)中, 關(guān)鍵是 SonarQube 使用相同的度量標(biāo)準(zhǔn)來(lái)衡量每種語(yǔ)言。理事會(huì)使用幾種不同的語(yǔ)言, 現(xiàn)在它們都可以以統(tǒng)一的方式呈現(xiàn)??梢院苋菀椎乜吹疆?dāng)前的度量狀態(tài), 以及它們是否在正確的方向上移動(dòng)。此外, 項(xiàng)目組合管理 (視圖) 插件允許理事會(huì)從多語(yǔ)言應(yīng)用程序中聚合質(zhì)量度量, 將每個(gè)應(yīng)用程序的質(zhì)量統(tǒng)一起來(lái), 并將應(yīng)用程序進(jìn)一步聚合到產(chǎn)品、項(xiàng)目和部門質(zhì)量的統(tǒng)一演示中。更美好的是, "由于我們每夜都在分析我們的大部分產(chǎn)品, 所以現(xiàn)在每個(gè)人都可以按需獲取xin的結(jié)果 (在每個(gè)聚合級(jí)別)", 瑞典理事會(huì)的測(cè)試組長(zhǎng)約翰 Esbj?rner 說(shuō)。Kapsch TrafficCom 使用的主要功能包括:時(shí)間機(jī)器-跟蹤關(guān)鍵代碼質(zhì)量度量的進(jìn)度。視圖-將多種語(yǔ)言聚合到產(chǎn)品/項(xiàng)目/部門中。差異視圖-檢查遺留項(xiàng)目中是否引入了新問(wèn)題。Java API-創(chuàng)建自己的集成插件, 因?yàn)樗呀?jīng)做了寶麗來(lái) ALM。SonARQUBE 結(jié)果顯示在墻上顯示器上
SonarQube 目前正被用于檢查超過(guò)30應(yīng)用程序和700k 代碼行的代碼質(zhì)量, 并且這些數(shù)字預(yù)計(jì)會(huì)隨著全年的采用而不斷增加。它每天都被開(kāi)發(fā)團(tuán)隊(duì)使用, 它們遍布?xì)W洲三不同的開(kāi)發(fā)站點(diǎn)。Esbj?rner 表示, "我們可以利用我們現(xiàn)有的詹金斯基礎(chǔ)結(jié)構(gòu)來(lái)觸發(fā)靜態(tài)分析, 從而緩解了向 SonarQube 的過(guò)渡, 因此無(wú)需額外的服務(wù)器。讓所有利益相關(guān)者通過(guò) web 瀏覽器輕松地訪問(wèn)結(jié)果, 并顯示在人們走過(guò)的墻壁監(jiān)視器上, 從而提高了對(duì)代碼質(zhì)量的認(rèn)識(shí)。這些指標(biāo)已成為一種幫助, 以可視化需要做什么。早些時(shí)候, 開(kāi)發(fā)人員知道代碼需要重構(gòu), 但是很難得到標(biāo)準(zhǔn)的數(shù)據(jù)來(lái)向決策者展示?,F(xiàn)在, 他們可以通過(guò)打開(kāi) web 瀏覽器并顯示度量和代碼來(lái)做到這一點(diǎn)。今天, 質(zhì)量門是為所有語(yǔ)言定義的, 因此新功能并不總能戰(zhàn)勝重構(gòu)。在發(fā)布前始終滿足di質(zhì)量級(jí)別要求。





代碼質(zhì)量是一個(gè)不斷增長(zhǎng)的市場(chǎng), 它是分析師對(duì)其大規(guī)模采用和大量投資回報(bào)的雷達(dá)。
認(rèn)知的復(fù)雜性提供了一個(gè)新的衡量如何硬編碼是理解-一個(gè)罷工開(kāi)發(fā)商的直覺(jué)正確的。下載白皮書本文描述了認(rèn)知的復(fù)雜性, 提出了一種新的度量方法, 以更準(zhǔn)確地測(cè)量法的相對(duì)理解。在這樣做的時(shí)候, 它解決了這個(gè)領(lǐng)域中圈復(fù)雜度的缺點(diǎn)。圈復(fù)雜度使用數(shù)學(xué)模型來(lái)評(píng)估方法, 對(duì)測(cè)試所需的工作量進(jìn)行精que測(cè)量, 但不準(zhǔn)確地測(cè)量需要了解它們的工作量。認(rèn)知的復(fù)雜性打破了使用數(shù)學(xué)模型評(píng)估軟件可維護(hù)性的實(shí)踐。它從由圈復(fù)雜度所設(shè)置的先例開(kāi)始, 但使用人工判斷來(lái)評(píng)估結(jié)構(gòu)應(yīng)如何計(jì)算, 并決定應(yīng)將哪些內(nèi)容添加到整個(gè)模型中。結(jié)果是, 它產(chǎn)生了方法復(fù)雜性評(píng)分, 使程序員對(duì)可維護(hù)性的相對(duì)評(píng)估比以前的模型更公平。






Ansible SonarQube 升級(jí)的角色
你可能知道, 并希望使用 SonarQube。這是一個(gè)偉大的工具, 是積極的發(fā)展和改善。這是偉大的, 如果你是一個(gè)開(kāi)發(fā)使用 SonarQube。但是, 如果您碰巧管理 SonarQube 實(shí)例, 則由于升級(jí)指南由11步驟組成, 因此不斷升級(jí)非常麻煩。
停止舊的 SonarQube 服務(wù)器
下載并解壓新的 SonarQube 分布在一個(gè)新鮮的目錄, 讓我們說(shuō) NEW_SONARQUBE_HOME
使用默認(rèn)的 H2 數(shù)據(jù)庫(kù)啟動(dòng)它, 并使用更新中心安裝您需要的插件
手動(dòng)安裝任何自定義插件
停止新服務(wù)器
更新聲納的內(nèi)容. 屬性和包裝. 配置文件位于 NEW_SONARQUBE_HOME/配置目錄中, 其內(nèi)容與 OLD_SONARQUBE_HOME/配置目錄中的相關(guān)文件 (web 服務(wù)器 URL、數(shù)據(jù)庫(kù)設(shè)置等) 有關(guān)。不復(fù)制-粘貼舊文件
如果使用了自定義 JDBC 驅(qū)動(dòng)程序, 請(qǐng)將其復(fù)制到 NEW_SONARQUBE_HOME/擴(kuò)展/jdbc 驅(qū)動(dòng)程序/<dialect>
備份數(shù)據(jù)庫(kù)
刪除數(shù)據(jù)/es 目錄
啟動(dòng)新的 web 服務(wù)器
復(fù)制 http://localhost:9000/setup (用您自己的 URL 替換 "localhost:9000") 來(lái)瀏覽并按照安裝說(shuō)明進(jìn)行操作
這是一個(gè)太多的步驟, 手動(dòng)執(zhí)行。因此, 我決定通過(guò)為它編寫一個(gè) Ansible 的角色來(lái)實(shí)現(xiàn)自動(dòng)化。
初始設(shè)置
在我開(kāi)始編寫 Ansible 劇本之前, 我需要找到一種方法來(lái)測(cè)試我的代碼。所以我開(kāi)始與流浪漢旋轉(zhuǎn)了一個(gè)虛擬機(jī), 并提供了一個(gè)簡(jiǎn)單的腳本。這是需要有類似的環(huán)境, 以我們的實(shí)際 SonarQube 生產(chǎn)實(shí)例。我能夠增量地構(gòu)建我的 Ansible 劇本并在這個(gè) VM 上測(cè)試它。很快我就明白了, 與流浪漢一起工作會(huì)減慢我的速度, 因?yàn)槲倚枰刂铆h(huán)境, 而不是初的預(yù)期。所以我決定考慮泊塢窗。
用于測(cè)試的泊塢窗
我找到了正式的 SonarQube 泊塢窗圖像, 但無(wú)法使用, 因?yàn)槲覀兊?SonarQube 實(shí)例安裝在 CentOS 和官fang圖像使用不同的基礎(chǔ)圖像。另外, 我需要自定義特定的 SonarQube 版本我想開(kāi)始。因此, 我創(chuàng)建了我們自己的 Dockerfile 與 CentOS 6 基地和 Ansible 安裝。
此泊塢窗映像不需要啟動(dòng) SonarQube, 因?yàn)槲抑皇窍腧?yàn)證是否進(jìn)行了正確的文件更改, 而我的 Ansible 手冊(cè)沒(méi)有錯(cuò)誤。升級(jí)的第yi步之一就是關(guān)閉服務(wù)器。
我將我的劇本裝入容器, 并在該容器內(nèi)運(yùn)行 Ansible, 對(duì)該本地環(huán)境進(jìn)行了更改。
當(dāng)前腳本的路徑
TESTS_DIR = $ (cd "$ (dirname" $ {BASH_SOURCE [0]} ")" & & 密碼 "
# 命令測(cè)試劇本
TEST_COMMAND = "cd/行動(dòng) & & ansible-劇本 $ @
-我 ' 本地主機(jī) '-c
升級(jí)-聲納 database.yml "
# 運(yùn)行容器安裝行動(dòng)為卷
泊塢 run-v "$ TESTS_DIR/.。/行動(dòng)/:/行動(dòng) "
"聲納-升級(jí)-測(cè)試"/"垃圾/bash-c" $ {TEST_COMMAND} "
在泊塢窗中運(yùn)行我的劇本大大減少了反饋回路, 所以我決定泊塢窗是走的路。你可以看看我所有的腳本在 GitHub
Ansible 角色
我一步一步地往前走, 我到達(dá)了一個(gè)點(diǎn), 一切似乎都在工作, 我有一個(gè)非常有用的 Ansible 的角色在我的手中。它尚未發(fā)布到 Ansible Galaxy, 但您可以在 GitHub 的 SonarQube 升級(jí) Ansible 角色項(xiàng)目下找到源文件和文檔。
當(dāng)前 Ansible 角色通過(guò)在當(dāng)前位置旁邊創(chuàng)建新安裝來(lái)升級(jí) SonarQube。這提供了回滾的方法 (如果需要)。
此時(shí), 角色執(zhí)行以下任務(wù):
確保特定的根用戶存在于聲納安裝
在所有安裝所在的目錄中創(chuàng)建聲納. sh
確保 SonarQube 服務(wù)存在
停止 SonarQube
下載新版本
備份數(shù)據(jù)庫(kù)
下載和安裝插件
將自定義配置應(yīng)用于新實(shí)例
確保刪除數(shù)據(jù)/es
重新 SonarQube 服務(wù)啟動(dòng)新版本
開(kāi)始 SonarQube
手動(dòng)步驟
這個(gè)過(guò)程仍然需要幾個(gè)手動(dòng)步驟。
在運(yùn)行升級(jí)手冊(cè)之前, 應(yīng)手動(dòng)確保在升級(jí)過(guò)程中要安裝的插件列表是xin的。您可以從 SonarQube 的管理視圖中獲得xin支持的版本號(hào)。
根據(jù) SonarQube 的建議, 此 Ansible 角色不僅復(fù)制以前安裝的配置, 而且使用帶有變量的模板來(lái)為新實(shí)例創(chuàng)建配置。這意味著在執(zhí)行升級(jí)之前, 開(kāi)發(fā)人員可以將模板和基本配置與新的 SonarQube 下載進(jìn)行比較。雖然這是一個(gè)手動(dòng)步驟, 但與以前的操作相比, 它更容易, 因?yàn)榭梢允褂?IDE 而不僅僅是從命令行中的 diff 工具進(jìn)行比較。
這兩個(gè)步驟都需要后續(xù)的手動(dòng)升級(jí), 我認(rèn)為這些升級(jí)準(zhǔn)備活動(dòng)。




使用SonarQube進(jìn)行PL / SQL分析 - 配置
發(fā)表評(píng)論
SonarQubePLSQL2在這個(gè)關(guān)于使用SonarQube分析PL / SQL代碼的新系列的第yi篇文章中,我們看到了如何組織我的分析環(huán)境:
一個(gè)文件夾C: SRC 與我所有的項(xiàng)目,
于每個(gè)項(xiàng)目的子目錄,
不同的其他子目錄,包括一個(gè)'.. Source',其中包含要分析的源代碼。
在我們的PL / SQL分析的情況下,這將被放在文件夾'C: SRC Demo PLSQL Source'中。
讓我們看看如何用Jenkins來(lái)創(chuàng)建和配置SonarQube這個(gè)代碼的分析。繼續(xù)閱讀→
Jean-Pierre FAYOLLE于2013年12月27日發(fā)布了SonarQube - PL / SQL。
使用SonarQube - 組織進(jìn)行PL / SQL分析
發(fā)表評(píng)論
SonarQubePLSQL1現(xiàn)在我更新了我的源代碼分析環(huán)境,隨著SonarQube或SonarQube-Runner和Jenkins的升級(jí),時(shí)間已經(jīng)到來(lái)更新了一個(gè)應(yīng)用和演示的存儲(chǔ)庫(kù)。繼續(xù)閱讀→
此條目發(fā)布于2013年12月22日由Jean-Pierre FAYOLLE發(fā)行的SonarQube - PL / SQL。








