代碼質量管理工具】——sonar

原文地址:https://blog.csdn.net/luckystar689/article/details/53871821

------------------------------------------------------------------------

【前言】

? ?bug越改越多,程序一換數據就崩,這就是目前我們系統的一個現狀。在這之前,進行過前后臺代碼規范整理,代碼判空等工作,但這是人工檢測的,有點慢,效率也比較低。當重新導入數據之后,模塊大多都起不來了。于是乎,忍無可忍,我們就用了強大的代碼質量工具——sonar來自動檢測我們的代碼,因為我們要寫更安全,更優雅的代碼。

?

? ?【sonar簡介】

? ? sonar(SonarQube)是一個開源平臺,用于管理源代碼的質量,它不僅是一個質量數據報告工具,更是代碼質量管理平臺。它通過插件的形式來管理代碼,它支持的語言包括:Java,PHP,C#,C等。

?

? ?【主要特點】

? ?sonar可以從以下七個維度來檢測代碼質量:

?

? ?1、不遵循代碼標準

? ? sonar可以通過PMD,CheckStyle,Findbugs等代碼規則檢測工具規范代碼的編寫;

?

? ?2、潛在的缺陷

? ? sonar可以通過PMD,CheckStyle,Findbugs等代碼規則檢測工具檢測出潛在的缺陷;

?

? ?3、糟糕的代碼復雜度分布

? ? 文件、類、方法等,如果復雜度過高將難以改變,這使得開發熱女難以理解它們,且如果沒有自動化的單元測試,對于程序中的任何組件的改變都將可能導致需要全面的回歸測試;

?

? ?4、重復

? ? 顯然程序中包含大量復制粘貼的代碼質量低下的,sonar可以展示源碼中重復嚴重的地方;

?

? ?5、注釋不足或者過多

? ? 沒有注釋將使代碼可讀性變差,特別是當不可避免地出現人員變動時,程序的可讀性將大幅度下降;

?

? ?6、缺乏單元測試

? ? sonar可以很方便地統計并展示單元測試覆蓋率;

?

? ?7、糟糕的設計

? ?通過sonar可以找出循環,展示包與包、類與類之間的相互依賴關系,可以展示自定義的架構規則。通過sonar可以管理第三方的jar包,可以利用LCOM4檢測單個任務規則的應用秦高,檢測耦合。

?

? ?【sonar使用】

? ? 由于架構師已經給咱們裝好了sonarQube,咱們只需在Maven的配置文件的profiles節點中添加一個sonar的profile節點,就可以直接在項目中執行Maven build命令——clean verify soanr:sonar使用了,執行完了之后,在服務器上就可以看到我們測試的項目了:

?

? ?profile節點代碼:

? ?

 
  1. <profile>

  2. <id>sonar</id>

  3. <activation>

  4. <activeByDefault>true</activeByDefault>

  5. </activation>

  6. <properties>

  7. <!-- Optional URL to server. Default value is http://localhost:9000 -->

  8. <sonar.host.url>

  9. http://192.168.22.220:9000

  10. </sonar.host.url>

  11. </properties>

  12. </profile>

?

? ?測試完成的代碼:

?

?

? ?

? ?A為最高級別,如果這幾項全是A的話,那說明你寫的代碼真的是太棒了!!!

?

? ?點開每個項目,查看詳情:

???1、bug,duplicatinos等列表:

? ??

?

? ?2、點開具體的某一項,顯示所有的bug,或者有問題的地方。再繼續往下點,就會看到我們有問題的代碼了,也會給出我們相應的解決方案。

?

? ?

?

? 【總結】

?

? ?通過兩天的改bug,其實也就是改成規范的代碼,說實在的,在改之前,我還不知道規范的代碼原來應該是這樣寫的,雖然之前那樣寫也能夠得到想要的結果,但是不是很安全,有潛在的缺陷。

?

? ?這兩天,沒學啥技術,但是也漲了不少知識,我的收獲總體來說主要有以下三點:

?

???1、之前咱們看到的代碼亂,寫法不規范,重復性高等。這些代碼sonar都可以檢測到,并給出我們正確的解決方案,我們在解決問題的同時,也知道了規范性的代碼應該如何寫。


? ?2、sonarqube代碼質量管理平臺,是全英的,在解決問題的同時,我們又學到了英語。


? ?3、在這樣反復的測試,修改,再測試的過程中,能夠提高我們編寫代碼以及閱讀代碼的能力。

?

?

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/537902.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/537902.shtml
英文地址,請注明出處:http://en.pswp.cn/news/537902.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

馬凱軍201771010116《面向對象程序設計(java)》第二周學習總結

第一部分&#xff1a;理論知識學習部分 &#xff08;1&#xff09;基本知識&#xff1a;簡單應用程序的結構&#xff1b;Java環境里的注釋方式&#xff1b; &#xff08;2&#xff09;數據類型&#xff08;4種整型、2種浮點型、1種字符型‘char’、真值型‘Boolean’。 &#x…

【代碼質量管理工具】-由sonar引發的思考

原文路徑&#xff1a;https://blog.csdn.net/luckystar689/article/details/53968102 ---------------------------------------------------------------------------------------- 之前&#xff0c;在看《笑傲江湖》的時候&#xff0c;郭德綱在給一對夫妻的表演做評審的時候…

php curl 模擬多線程,php利用curl 多線程 模擬 并發的詳解

php利用curl 多線程 模擬 并發的詳解發布于 2014-12-07 10:17:25 | 265 次閱讀 | 評論: 0 | 來源: 網友投遞PHP開源腳本語言PHP(外文名: Hypertext Preprocessor&#xff0c;中文名&#xff1a;“超文本預處理器”)是一種通用開源腳本語言。語法吸收了C語言、Java和Perl的特點&…

新版DAEMON Tools Lite打不開 bin 文件解決方法

DAEMON Tools Lite 支持打開 *.cue 解決方法很簡單&#xff1a;將*.bin 重命名為 *.cue 就可以打開

Linux集群架構(LVS DR模式搭建、keepalived + LVS)

為什么80%的碼農都做不了架構師&#xff1f;>>> LVS DR模式搭建 準備工作&#xff1a;三臺機器 分發器&#xff0c;也叫調度器&#xff08;簡寫為dir&#xff09;&#xff1a;192.168.248.128 rs1 &#xff1a;192.168.248.129 rs2 : 192.168.248.130 vip : 192.16…

java手機狀態欄圓形圖標,android實現狀態欄添加圖標的函數實例

本文實例講述了android實現狀態欄添加圖標的函數。分享給大家供大家參考。具體如下&#xff1a;private void showNotification() {// 創建一個NotificationManager的引用NotificationManager notificationManager (NotificationManager)AutoFile.this.getSystemService(andro…

Windows下SVN回滾到舊版本(TortoiseSVN)

原文地址&#xff1a;https://www.cnblogs.com/tommy-huang/p/4729634.html ---------------------------------------- 當發現新提交的代碼有問題&#xff0c;然后想將某個舊的版本作為最新的版本時&#xff0c;可以使用回滾&#xff0c; 操作步驟如下&#xff1a; 1. 簽出…

看懂架構設計中的服務隔離

前言 我們在做系統架構設計的時候&#xff0c;經常離不開的一個話題就是進行服務的隔離設計。 那什么是「服務隔離」呢&#xff1f; 顧名思義&#xff0c;它是指將系統按照一定的原則劃分為若干個服務模塊&#xff0c;各個模塊之間相對獨立&#xff0c;無強依賴。當有故障發生時…

2018最新蘋果APP上架App Store流程(超詳細)

內容很豐富&#xff0c;點擊查看博文 https://blog.csdn.net/xxw888/article/details/73618837/

[五] JavaIO之InputStream OutputStream簡介 方法列表說明

InputStream 和 OutputStream 對于字節流的輸入和輸出 是作為協議的存在 所以有必要了解下這兩個類提供出來的基本約定 這兩個類是抽象類,而且基本上沒什么實現,都是依賴于子類具體的去實現 但是他是對于其子類 協議綱領一般的存在 了解清楚每一個方法含義,對于后續具體的子類將…

Mysql yum 安裝后,一些重要的文件路徑

默認配置文件路徑&#xff1a; 配置文件&#xff1a;/etc/my.cnf 日志文件&#xff1a;/var/log//var/log/mysqld.log 服務啟動腳本&#xff1a;/usr/lib/systemd/system/mysqld.service socket文件&#xff1a;/var/run/mysqld/mysqld.pid #(a)數據庫目錄 /var/lib/mysql…

mysql雙機熱備 配置文件,MYSQL 雙機熱備配置手冊()

[原創] MYSQL 雙機熱備配置手冊[原創]http://www.chinaunix.net 作者:squall1 發表于&#xff1a;2007-07-23 19:01:43【發表評論】【查看原文】【存儲備份之家討論區】【關閉】作者&#xff1a;CU-squall發表于&#xff1a;2005年4月18日 8:21 可以不經作者同意自由傳播&…

[轉]資本經營董事長班告訴你:不只企業有商業模式,個人商業價值更重要

本文轉自&#xff1a;http://blog.sina.com.cn/s/blog_181b5b47e0102xz4v.html 東方財智-資本經營董事長班>>> 經營者如何輕松駕馭金融工具為企業發展加速、升級互聯網工具實現品牌營銷裂變、利用管理工具優化公司內部結構&#xff0c;把握前沿視角&#xff0c;實現快…

CentOS 7添加開機啟動服務腳本

原文路徑&#xff1a;https://blog.csdn.net/wang123459/article/details/79063703 --------------------------------------------------------- 一、添加開機自啟服務 在CentOS 7中添加開機自啟服務非常方便&#xff0c;只需要兩條命令(以Jenkins為例)&#xff1a; system…

php 彩票系統,hsyl12141511 一套完整的PHP版彩票系統 - 下載 - 搜珍網

文件名大小更新時間BOEKJ02017-12-14BOEKJ\.idea02017-12-13BOEKJ\.idea\BOEKJ.iml2812017-04-28BOEKJ\.idea\modules.xml2622017-04-28BOEKJ\.idea\workspace.xml100272017-04-28BOEKJ\String-ext.js10402015-05-30BOEKJ\TianHeng.exe230402015-05-05BOEKJ\config.js309232017…

CPR認證-建材CE認證-305/2011/EU

建材CPR認證 - Regulation (EU) No 305/2011  2011年3月&#xff0c;歐盟頒布了新建筑產品法規RETULATION &#xff08;EU&#xff09; No 305/2011 – CPR&#xff0c;并通告了新法規于2013年7月進入強制執行&#xff0c;取代了老CPD指令89/106/EEC。  新的建材CPR認證也是…

python支持復數類型以下什么說法是錯誤的,【Python】專項練習題(1)

1.python代碼如下:foo [1,2]foo1 foofoo.append(3)A.foo 值為[1,2]B.foo 值為[1,2,3]C.foo1 值為[1,2]D.foo1 值為[1,2,3]答案&#xff1a;B D鏈接&#xff1a;https://www.nowcoder.com/profile/153165401/myFollowings/detail/20055659來源&#xff1a;牛客網2.下列程序打印…

ios10不能定位 window.navigator.geolocation.getCurrentPosition(定位第一節)

原文連接&#xff1a; https://blog.csdn.net/michael_ouyang/article/details/54137709 --------------------------------------------------------- 問題分析&#xff1a; 目前由于許多蘋果用戶都升級到了iOS系統&#xff0c;蘋果的iOS 10已經正式對外推送&#xff0c;…

php網站無法顯示,php – 在UTF-8網站上無法正確顯示的字符

我已經完成了我能想到的一切,但是在這個網頁上沒有正確顯示特殊字符.例如,在數據庫中它是&#xff1a;但在網站上它是&#xff1a;Nouveaux R&#xfffd;alistes這是我檢查過的一切……數據庫設置為UTF-8&#xff1a;該頁面是用NetBeans編寫的,文檔編碼設置為UTF-8&#xff1a…