靜態代碼檢查完成代碼分析和SonarQuber的初探

靜態代碼檢查完成代碼分析和SonarQuber的初探

靜態代碼檢查就是靜態測試的一種,因此我們先說說靜態測試和動態測試都是什麼,然後我們再來聊一聊靜態代碼檢查。

先搞清動靜的區別

靜態測試是指不運行被測程序本身,通過分析或檢查源程序的語法、結構、過程、接口等來檢查程序的正確性。而動態測試是通過運行被測程序來檢查運行結果與預期結果的差異,並分析運行效率和健壯性等指標。

靜態測試被測對象是各種與軟件相關的有必要進行測試的產物,是對需求規格說明書、軟件設計說明書、源程序做結構分析、流程圖分析、符號執行來找錯。靜態測試可以手工進行,充分發揮人的思維的優勢,並且不需要特別的條件,容易展開,但是靜態測試對測試人員的要求較高,至少測試人員需要具有編程經驗。

靜態測試主要包括各階段的評審、代碼檢查、程序分析、軟件質量度量等,用於對被測程序進行特性分析。其中評審通常有人來執行;代碼檢查程序分析、軟件質量度量等即可人工完成,也可用工具來完成,但工具的作用和效果相對更大更好一些。

從上面我們可以瞭解到代碼檢查是靜態測試中的關鍵一步,那麼代碼檢查到底是個什麼工作內容嗎?

代碼檢查

代碼檢查包括代碼走查、桌面檢查、代碼審查等,主要檢查代碼和設計的一致性,代碼對標準的遵循、可讀性,代碼的邏輯表達的正確性,代碼結構的合理性等方面;可以發現違背程序編寫標準的問題,程序中不安全、不明確和模糊的部分,找出程序中不可移植部分、違背程序編程風格的問題,包括變量檢查、命名和類型審查、程序邏輯審查、程序語法檢查和程序結構檢查等內容。

從代碼檢查的定義中我們可以看出代碼檢查不需要自動任何服務就可以通過代碼掃描完成,全部過程都是按照預定義好的規則完成的,只要針對不同的編程語言設計好不同的規則就可以對其進行代碼掃描,完成代碼檢查任務了。如果能將其放到一個工具中完成,那麼人工可以完全不參與,是一個完全自動化的流程。這也就導致了通過代碼掃描完成的代碼檢查工作只是一個代碼預定規則的檢查,並不能保障其編寫邏輯符合預期設計,同時如果預定規則不合理那麼代碼掃描的結果的偏差就會很大。

從上面的內容可以看出,代碼掃描雖然尤其優越性也有其弊端,但是如果有很好的開放性的工具完成,通過修訂並選取合適的規則是可以達到質量保障的預期的。在代碼掃描的工具上選擇並不多,如果站在平臺化、服務化的角度,並且兼顧CI流水線的需求,首當其衝的就是SonarQube。

SonarQuber和Intelij IDEA

Sonar是一個用於代碼質量管理的開源平臺。通過插件機制,Sonar 可以集成不同的IDE、CI系統、測試工具中,比如pmd-cpd、checkstyle、findbugs、Jenkins。通過不同的插件對這些結果進行再加工處理,通過量化的方式度量代碼質量的變化,從而可以方便地對不同規模和種類的工程進行代碼質量管理。 目前Sonar的規則覆蓋了絕大部分的主流的編程語言,這位測試左移提供了有效的方法。

我們都知道測試越早開始,修復問題的成本越低,那麼如果我們能將代碼掃描引入到RD的IDE中,這無疑是測試左移的一個很好的實踐落地。同時,在RD開發代碼的過程中就提供了不斷地掃描,不斷地反饋的方式和手段。通過測試左移可以有效的提升質量效能,從而可以影響工程效能的提升。

Intelij IDEA添加sonar的plugin

通過將Sonar引入到開發的IDE中,我們從最早的檢測手段上就提供了持續反饋,從而逐漸的在後續各個執行環節都有持續反饋,這樣就可以建立一個不斷地反饋、不斷地優化製品過程的一個良性的循環。那麼如何將Sonar引在這裏插入圖片描述入到Intelij IDEA(以下簡稱IDEA)中呢?

首先打開Inteij IDEA的setting菜單,進入插件管理:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-kiwcmdm1-1592981161528)(https://i.loli.net/2019/09/19/nKv6xJUylgApYDV.png)]

進入marketplace,在插件搜索框中輸入sonar後,選擇sonarlint插件安裝:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-KtUn5EEG-1592981161530)(https://i.loli.net/2019/09/19/dc1FBgiXmGZsx6R.png)]

重啓IDE後,你就有了接入sonar的最原始手段了

sonarlint插件配置

那麼下面我們進入配置一下你自己的私有sonar就可使用你的規則檢測你的代碼了,再次進入Setting,點擊other Settings下的SonarLint General settings:
在這裏插入圖片描述

在 sonarqube /soanrcloud connections裏面添加私有化的sonar服務:

在這裏插入圖片描述

配置本地sonar後,點擊下一步:

在這裏插入圖片描述

然後選擇對應的登錄認證方式(token或者用戶名密碼),輸入後點擊下一步後點擊完成:

在這裏插入圖片描述

再次進入setting下的other settings,選擇SonarLint project settings:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-q09kRKDr-1592981404271)(https://i.loli.net/2019/09/19/eBwh5znSl9LTFmo.png)][外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-1LVApuwB-1592981161555)()]

然後作如下設置,在project中後的search in list中選擇一個你自己的項目後點擊OK。

IDEA中如何使用

進入IDEA的項目頁面,在下面可以看到sonarlint的窗口:

在這裏插入圖片描述

打開一個代碼,點擊sonarlint視圖中的run按鈕,就可以進行掃描了:

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章