【程式開發筆記】保證軟體品質一定要做程式碼檢測 (下) | 開源程式碼檢測平台(SonarQube) - 大漠國渡

前言

上一篇文章 【程式開發筆記】保證軟體品質一定要做程式碼檢測 (上) | 開源程式碼檢測平台 (SonarQube) - 大漠國渡 ,已經教大家安裝 SonarQube 以及SonarScanner,接下來就可以進行原碼檢測了😁

在檢測前,我們案需要建立專案, 取得檢測指令,並透過指令執行檢測~指令的部分會教大家做成批次檔(.bat),方便日後的檢測,不用一值輸入重複的指令。

成功完成原碼檢測後,可以在 SonarQube 上查看檢測報告,並透過報告上提供的修正放是進行修復,修復後可以透過同一指令進行複測,進而確認修復結果。

如何看 SonarQube 的檢測報告📈,之後會再專門寫一篇文章,來為大家做個詳細內容的分享。

使用 SonarQube 進行程式碼檢測

一、建立「檢測專案」

1. 先登入 SonarQube,若未修改密碼未建立帳號,可以參考前一篇文章進行登入。

 SonarScanner - 建立「檢測專案」

2. 登入 SonarQube 系統後,按下「Add Project」,再按下「Manually」。

SonarScanner - 建立「檢測專案」

3. 設定「專案鍵值」,輸入「專案顯示的名稱」(用來分辨專案),按下「設置」。

SonarScanner - 建立「檢測專案」

4. 點選「創建憑證」,按下「創建」。

SonarScanner - 建立「檢測專案」

5. 取得「憑證」後,按下「繼續」。

SonarScanner - 建立「檢測專案」

6. 選擇「技術架構」及「作業系統 (OS)」,之後會產出一個執行原碼檢測的指令

(1) 「技術架構」的部分,因為我是開發網站 (WEB),所以用到的語言很多 (如 : JavaScript、Java、Html...等),所以圖上是選擇其他

(2) 「作業系統 (OS)」,我是用 Windows 所以圖上是選擇 Windows ,記得依你的系統選擇阿~😏

(3) 指令要記得好好保存 。(我暫時沒有找到遺失指令後,怎麼找回來的方法)😅

SonarScanner - 建立「檢測專案」

二、執行「專案檢測」

 (一)、建立「執行原碼檢測」批次檔 (.bat)

1. 先到你要檢測的程式碼路徑下,點擊滑鼠「右鍵」,選擇「新增」,再選擇「文字文件 (.txt)」。

SonarScanner - 執行「專案檢測」

2. 編輯「文字文件 (.txt)」,並貼上「執行原碼檢測的指令」,在來就是修改SonarScanner 執行程式位置。

SonarScanner - 執行「專案檢測」

3. 將「文字文件 (.txt)」重新命名。

SonarScanner - 執行「專案檢測」

 4. 名稱自己決定,重點是將附檔名變更為「批次檔(.bat)」。

SonarScanner - 執行「專案檢測」

5. 將要檢測的「程式碼檔案」放入指定的路徑內

SonarScanner - 執行「專案檢測」

 (二)、執行「原碼檢測」

1. 執行「批次檔(.bat)」。

SonarScanner - 執行「專案檢測」

2. 開始執行原碼檢測,檢測完畢後,會自動關閉視窗。

SonarScanner - 執行「專案檢測」

三、檢測結果說明

(一)、檢測結果

完成檢測後,專案卡上面就會呈現燈號,結果正常 (綠色燈號,燈號等級 A) 是最好的。

如果是錯誤的話,就要再看 Bugs弱點Hotspots Reviewed 氣味,哪一個燈號是紅燈燈號 (燈號等級 B、C、D、E),都表示有要修改的項目,那個就要趕緊修復啦~ 避免自己的系統被駭客入侵。

SonarQube - 檢測結果說明

(二)、解讀 - 檢測結果「類別」

1. 錯誤 (Bugs) : 編碼的錯誤將損毀你的程式碼,需要立即的修復

在這個類別的項目都要進行修復,這些錯誤都可能造成系統無法正常運行,導致功能不法運作。

2. 弱點 : 使程式碼中出現一個容易受到攻擊的點。

弱點這個類別的項目建議進行修復,這些錯誤都可以被有心人是運用,導致「系統風險、資安風險」不可被忽視,基本上還是屬於要修復的項目只是沒有錯誤 (Bugs) 急迫。

3. 氣味 : 屬於一種可維護性問題,會使你的程式碼混亂且難以維護。

氣味類別是建議要調整的程式碼,這些問題會造成使用者難以維護,或者是維護成本高的問題,這些問題都會有提供建議,使我們的程式碼標準化,而不是雜亂無章的。

有時間的話,建議做調整,提升可維護性,減少成本。

4. 安全熱點 : 與漏洞不同,安全疑慮熱點不一定是容易受到攻擊的問題點。安全疑慮熱點重點顯示了需要人工檢查的有安全疑慮的程式碼段落。

安全熱點弱點有點類似,但不一定會發生問題,只要控管好的話,因此是需要人工檢查是否真的有問題。

安全熱點有三的等級(高、中、低),基本上我會修正高、中兩個等級,他們是屬於風險比較高的,這的類別也是屬於有時間的話,建議做調整的項目。

(三)、解讀 - 檢測結果「燈號等級」

1. 燈號等級 A : 0 個 Bugs。

2. 燈號等級 B : 至少 1 個次要的 Bugs

3. 燈號等級 C : 至少 1 個主要的 Bugs。

4. 燈號等級 D : 至少 1 個嚴重的 Bugs。

5. 燈號等級 E : 至少 1 個阻礙程式運行的 Bugs。

(四)、解讀 - 檢測結果「Bugs 嚴重程度」

1. 阻礙 : 錯誤高機率會影響運作中的應用程序行為,

如 : 記憶體洩漏未關閉的JDBC連接...等。(必須立即修復代碼)

2. 嚴重 : 錯誤低機率會影響生產的應用程序行為,也可能是表示安全漏洞的問題, 

如 : 沒有抓取到的區塊、SQL注入...等。(必須立即修復代碼)

3. 主要 : 質量缺陷嚴重影響開發人員的程式撰寫。(建議做調整)

如 : 重複的區塊、未使用的參數。

4. 次要 : 質量缺陷會稍微影響開發人員的程式撰寫。(建議做調整)

如 : 每行書寫不應太長、“switch” 語句應至少包含3種情況。 

5. 訊息 : 發現錯誤或質量缺陷並提醒。(建議做調整)

SonarQube - 解讀 - 檢測結果「Bugs 嚴重程度」

(五)、解讀 - 檢測結果「標準」

「標準」是由一些組織根據實際情況所統計的項目,這些會是屬於目前最常見的攻擊手法,因此這些問題風險最高,這邊的問題在上述類別都已包含在內,在這邊所列是應最優先處理的項目。

: 開放網路軟體安全計畫所列的「前十大網路應用系統安全安全弱點 (OWASP TOP 10)」。

SonarQube - 解讀 - 檢測結果「標準」

(六)、解讀 - 檢測結果「建議修正指引」

案例 : HTML 裡它建議我們把 <b> 改為較新的 HTML5 標籤 <strong>。

操作方式,就是他所列的問題旁有「Why is this an Issue」,點擊後下方會呈現問題說明「建議修正指引」,快速的協助我們修正項目。

SonarQube - 檢測結果「建議修正指引」

四、匯出「檢測結果」報表

(一)、匯出「檢測結果」報表

1.  選擇更多,點選「CNES Report」,在選擇要匯出的專案,按下「Generate」,並儲存報表

SonarQube CNES Report - 匯出「檢測結果」報表

 2. 四個檔案,較常使用的會是 WOED、EXCLE 檔,因為一般人使用者都有OFFICE 軟體可以開啟,那我會以這兩的檔案做簡易的說明。

SonarQube CNES Report - 匯出「檢測結果」報表

3. WOED 檔,為主要的報表

SonarQube CNES Report - 匯出「檢測結果」報表

(二)、解讀「檢測結果」報表

 1. 紅框部分對應了 SonarQube 檢測結果卡片的燈號。

說明同「三、檢測結果說明 」的「(一)、檢測結果」。

SonarQube CNES Report - 匯出「檢測結果」報表

2. 紅框部分對應了類別的問題數量 ,紅框部分下面的表是「有問題的項目」清單。

說明同「三、檢測結果說明 」的「(二)、解讀 - 檢測結果「類別」。

SonarQube CNES Report - 匯出「檢測結果」報表

3. EXCLE 檔是將「有問題的項目」清單的內容更詳細列出。

SonarQube CNES Report - 匯出「檢測結果」報表

相關文章

【程式開發筆記】輕鬆了解網站安全10大風險,開放網路軟體安全計畫 (OWASP TOP 10) - 大漠國渡

【程式開發筆記】保證軟體品質一定要做程式碼檢測 (上) | 開源程式碼檢測平台 (SonarQube) - 大漠國渡

參考資料

SonarQubeChineseDoc8.1

精選美景 - 周邊商品 (提供客製化服務)

大漠有設計簡單的程式碼,讓大家可以體驗一下寫程式的感覺,以及呈現結果,並將他製作成周邊商品,如 : 藍芽喇叭、拼圖、鑰匙圈、筆記本、滑鼠、滑鼠墊、鍵盤...等商品

商品類別涉及了電子產品、居家用品、杯子餐廚、服飾、旅行用品、辦公用品...等

有興趣的人可以到 大漠國渡 - 商品小舖 看看喔~  

我的優惠碼 K0999975,可享受 KUSDOM 全場 9 折優惠。 

精選授權圖片

如果您喜歡大漠國渡「攝影照片」的話,可以在 大漠國渡 Shutterstock 的作品集中購買喔 ~

Shutterstock 授權表
如果你也有攝影做作品要分享的話,也歡迎你加入 Shutterstock contributor

如果您喜歡我的內容,可以這樣贊助大漠國渡 (支持創作)

如果您喜歡我的內容,可以透過以下方式贊助大漠國渡,支持創作

Paypal : https://www.paypal.com/paypalme/jay82313tw

悠游付 (EasyWallet APP) : (390) 2202-2122-3306-1876

將來銀行 : (823) 8862-0972-6236-01

留言