如何使用SonarQube分析代碼并查找漏洞?
譯文【51CTO.com快譯】SonarQube是一款基于Web的工具,可幫助開發人員生成沒有安全問題、錯誤、漏洞、異常和一般問題的代碼。如果您在開發一個小項目,那可能很容易,您可以仔細檢查代碼以發現任何問題。但如果您在開發一個大項目(或眾多小項目),可能沒時間梳理自己編寫的每一行代碼。
本文介紹如何使用SonarQube代碼分析平臺這款工具,以便您可以信任自己或別人編寫的代碼。
雖然您已安裝了一款很不錯的基于Web的工具,但使用Sonarqube不像您想象的那么簡單。如果您研讀一下說明文檔,可能會發現讓人有點迷糊。
別擔心,我會介紹使用Sonarqube掃描“Hello,World!”應用程序(用Java編寫)的過程。由于我們最初安裝在Ubuntu Server 20.04上,我會繼續使用該平臺。如果您在不同的操作系統上使用Sonarqube,需要進行必要的調整。
安裝Sonar-scanner
這是大多數用戶會迷糊的地方。使用Sonarqube進行任何操作之前,必須將sonar-scanner應用程序安裝在項目所在的機器上。我會使這個步驟變得更簡單,將其安裝在托管Sonarqube的同一臺服務器上。以下是您的操作方法。
登錄到托管Sonarqube的服務器,使用以下命令安裝幾個依賴項:
- sudo apt-get update && sudo apt-get install unzip wget nodejs -y
一旦安裝了那些依賴項,使用以下命令創建一個新目錄:
- mkdir sonarqube
使用以下命令切換進入該目錄:
- cd sonarqube
下載sonar-scan文件:
- wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.2.0.1873-linux.zip
解壓縮下載的文件:
- unzip sonar-scanner-cli-4.2.0.1873-linux.zip
最后,使用以下命令移動新創建的文件夾:
- sudo mv sonar-scanner-4.2.0.1873-linux / opt / sonar-scanner
接下來,我們需要使用以下命令創建sonar-scan配置文件:
- sudo nano /opt/sonar-scanner/conf/sonar-scanner.properties
在該文件中,粘貼以下內容:
- sonar.host.url=http://SERVER:9000
- sonar.sourceEncoding=UTF-8
其中SERVER是托管服務器的IP地址。
保存并關閉文件。
現在,我們將創建另一個配置文件,該文件將設置必要的$ PATH變量。執行以下命令:
- udo nano /etc/profile.d/sonar-scanner.sh
在該文件中,粘貼以下內容:
- #/bin/bash
- export PATH="$PATH:/opt/sonar-scanner/bin"
保存并關閉文件。
使用以下命令將sonar-scanner添加到您的路徑:
- source /etc/profile.d/sonar-scanner.sh
使用以下命令驗證sonar-scanner在正常運行:
- sonar-scanner -v
您應該看到幾個工具的版本號。成功了!您可以開始進行第一次掃描了。
如何掃描您的代碼?
不妨創建一個Hello, World!應用程序示例。使用以下命令創建一個新目錄:
- mkdir Java
使用以下命令切換進入該文件夾:
- cd Java
使用以下命令創建代碼文件:
- nano helloworld.java
在該文件中,粘貼以下內容:
- // Your Hello, World! java application
- class HelloWorld {
- public static void main(String[] args) {
- System.out.println("Hello, World!");
- }
- }
保存并關閉文件。
現在,回到Sonarqube Web界面,創建一個新項目(圖1)。
圖1:點擊“創建新項目”,開始該過程
在隨后彈出的窗口(圖2)中,為新項目指定鍵和顯示內容的名稱。
圖2:在Sonarqube中命名新項目
在下一個窗口(圖3)中,您必須為項目生成令牌。為令牌命名,然后點擊“生成”。
圖3:為新項目生成令牌
然后,您將不得不給令牌賦予另一個名稱,然后點擊“生成”。這將為您顯示令牌。復制并保存該令牌(因為以后的掃描將需要它)。
點擊“繼續”,進入到下一步。在此窗口(圖4)中,選擇項目的構建技術(我們將選擇“其他”)。
圖4:為您的項目選擇構建技術
然后將提示您輸入有待掃描的操作系統。在本例中,我們將選擇Linux。選擇完畢后,您會看到在計算機上運行的命令(圖5)。回到終端窗口,將該命令粘貼到窗口中。
圖5:Sonarqube顯示了您用于掃描的命令
從您的項目目錄內運行掃描,它將完成掃描工作。片刻之后(取決于項目的大小),它將結束掃描,掃描結果會顯示在Sonarqube Web GUI中(圖6)。
圖6:我們的掃描結果顯示了一個非常干凈的項目
明白了,這是一個簡單的Hello,World!例子。如果您的項目較大,掃描會花費較長的時間,掃描結果可能不像圖6所示。因此,請閱讀Sonarqube報告,解決報告的所有問題。
這是確保您代碼盡可能干凈、沒有問題的好方法。別靠自己單獨完成這項任務。僅需幾個額外的步驟,您就可以借助一個平臺,更快速、更可靠地完成這項任務。
原文標題:How to Analyze Code and Find Vulnerabilities with SonarQube,作者:Jack Wallen
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】