iT邦幫忙

0

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

  • 分享至 

  • xImage
  •  

圖文並茂的詳細內容至自個人部落格 : 【程式開發筆記】保證軟體品質一定要做程式碼檢測 (下) | 開源程式碼檢測平台(SonarQube) - 大漠國渡

前言

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

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

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

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

使用 SonarQube 進行程式碼檢測

一、建立「檢測專案」

  1. 先登入 SonarQube,若未修改密碼或未建立帳號,可以參考前一篇文章進行登入。
  2. 登入 SonarQube 系統後,按下「Add Project」,再按下「Manually」。
  3. 設定「專案鍵值」,輸入「專案顯示的名稱」(用來分辨專案),按下「設置」。
  4. 點選「創建憑證」,按下「創建」。
  5. 取得「憑證」後,按下「繼續」。
  6. 選擇「技術架構」及「作業系統 (OS)」,之後會產出一個執行原碼檢測的指令。
  • (1) 「技術架構」的部分,因為我是開發網站 (WEB),所以用到的語言很多 (如 : JavaScript、Java、Html...等),所以圖上是選擇其他。
  • (2) 「作業系統 (OS)」,我是用 Windows 所以圖上是選擇 Windows ,記得依你的系統選擇阿~😏
  • (3) 指令要記得好好保存 。(我暫時沒有找到遺失指令後,怎麼找回來的方法)😅

二、執行「專案檢測」

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

  1. 先到你要檢測的程式碼路徑下,點擊滑鼠「右鍵」,選擇「新增」,再選擇「文字文件 (.txt)」。
  2. 編輯「文字文件 (.txt)」,並貼上「執行原碼檢測的指令」,在來就是修改SonarScanner 執行程式位置。
  3. 將「文字文件 (.txt)」重新命名。
  4. 名稱自己決定,重點是將附檔名變更為「批次檔(.bat)」。
  5. 將要檢測的「程式碼檔案」放入指定的路徑內。

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

  1. 執行「批次檔(.bat)」。
  2. 開始執行原碼檢測,檢測完畢後,會自動關閉視窗。

三、檢測結果說明

(一)、檢測結果

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

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

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

  1. 錯誤 (Bugs) : 編碼的錯誤將損毀你的程式碼,需要立即的修復。
    在這個類別的項目都要進行修復,這些錯誤都可能造成系統無法正常運行,導致功能不法運作。

  2. 弱點 : 使程式碼中出現一個容易受到攻擊的點。
    弱點這個類別的項目建議進行修復,這些錯誤都可以被有心人是運用,導致「系統風險、資安風險」不可被忽視,基本上還是屬於要修復的項目,只是沒有錯誤 (Bugs) 急迫。

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

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

  1. 安全熱點 : 與漏洞不同,安全疑慮熱點不一定是容易受到攻擊的問題點。安全疑慮熱點重點顯示了需要人工檢查的有安全疑慮的程式碼段落。
    安全熱點跟弱點有點類似,但不一定會發生問題,只要控管好的話,因此是需要人工檢查是否真的有問題。

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

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

  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. 訊息 : 發現錯誤或質量缺陷並提醒。(建議做調整)

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

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

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

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

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

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

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

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

  1. 選擇更多,點選「CNES Report」,在選擇要匯出的專案,按下「Generate」,並儲存報表。
  2. 四個檔案,較常使用的會是 WOED、EXCLE 檔,因為一般人使用者都有OFFICE 軟體可以開啟,那我會以這兩的檔案做簡易的說明。
  3. WOED 檔,為主要的報表。

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

  1. 紅框部分對應了 SonarQube 檢測結果卡片的燈號。
    說明同「三、檢測結果說明 」的「(一)、檢測結果」。

  2. 紅框部分對應了類別的問題數量 ,紅框部分下面的表是「有問題的項目」清單。
    說明同「三、檢測結果說明 」的「(二)、解讀 - 檢測結果「類別」。

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


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言