靜態(tài)掃描操作手冊
前言
靜態(tài)源代碼掃描是近年被人提及較多的軟件應用安全解決方案之一。它是指在軟件工程中,程序員在寫好源代碼后,無需經過編譯器編譯,而直接使用一些掃描工具對其進行掃描,找出代碼當中存在的一些語義缺陷、安全漏洞的解決方案。目前的靜態(tài)掃描技術已經從90年代時候的,編碼規(guī)則匹配這種由編譯技術拓展過來的分析技術向程序模擬全路徑執(zhí)行的方向發(fā)展,由此,這種模擬執(zhí)行相對的執(zhí)行路徑比動態(tài)執(zhí)行更多,能夠發(fā)現(xiàn)很多動態(tài)測試難以發(fā)現(xiàn)的缺陷。
目前工作中,我們主要面對的可分為兩類:eclipse開發(fā)代碼,studio開發(fā)代碼,針對這兩種工具開發(fā)的代碼我們分別運用eclipse及studio安裝各自的fingbugs插件,再進行代碼靜態(tài)掃描,并對問題進行分析。
工具
主工具:Eclipse、Android Studio;
其他輔助插件:findbugs插件、maven插件、Jdk;
三、環(huán)境準備
安裝JDK
安裝JDK
雙擊exe文件進入安裝向導界面,點擊“下一步”。

進入JDK安裝設置界面,是否需要更改路徑由安裝者而定。點擊“下一步”。

進入JDK安裝設置界面,是否需要更改路徑由安裝者而定。點擊“下一步”。

等待Java安裝完畢,回到JDK安裝界面提示“已安裝成功”,點擊“關閉”。

如何配置java環(huán)境變量?
Java環(huán)境變量配置分“相對路徑”和“絕對路徑”兩種方式。
若未配置java環(huán)境變量,在window命令提示符輸入java或javac,將會提示不是內部或外部命令,也不是可運行的程序。

a. 使用相對路徑方式配置Java環(huán)境變量:
新建系統(tǒng)變量JAVA_HOME,變量值為JDK安裝路徑,如:
D:\Program?Files?(x86)\Java\jdk1.8.0_25;
配置路徑為“我的電腦→屬性→高級系統(tǒng)設置→高級→環(huán)境變量→系統(tǒng)變量→新建→填寫變量名JAVA_HOME,變量值JDK安裝路→確定”。

再新建系統(tǒng)變量CLASSPATH;
變量值為:“.\;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar”或只填“.\“。
注:點號表示當前目錄,分號用于隔開路徑與路徑。

在系統(tǒng)變量Path變量值中添加JDK安裝路徑下的bin目錄。
變量值:“;%JAVA_HOME%\bin”;

b. 使用絕對路徑方式配置java環(huán)境變量。
新增系統(tǒng)變量CLASSPATH,變量值為:
“.\;D:\Program?Files?(x86)\Java\jdk1.8.0_25\lib\dt.jar;D:\Program?Files?(x86)\lib\tools.jar”或“.\”
系統(tǒng)變量Path所需添加變量值為:
“;D:\Program?Files?(x86)\Java\jdk1.8.0_25\bin”;

安裝maven插件及eclipse配置maven
下載maven的bin,在apache官方網站可以下載。

下載下來之后,解壓,找個路徑放進去,把bin的位置設在環(huán)境變量里,新建環(huán)境變量MAVEN_HOME

在PATH里加入maven的bin的路徑

由于Maven依賴Java運行環(huán)境,因此使用Maven之前需要配置Java的運行環(huán)境。下載并安裝JDK,配置JDK的環(huán)境變量JAVA_HOME,否則maven將無法使用;
配置完畢后,在Windows命令提示符下,輸入mvn -v測試一下,配置成功顯示如圖:

配置成功后開始在Eclipse中配置Maven,點擊eclipse菜單欄Help->Eclipse Marketplace搜索關鍵字maven到插件Maven
Integration for Eclipse 并點擊安裝即可,如下圖:




安裝完畢后,點擊重啟eclipse;

重啟后,為了使得Eclipse中安裝的Maven插件,同windows中安裝的那個相同,需要讓eclipse中的maven重新定位一下,點擊Window -> Preference -> Maven -> Installation -> Add進行設置:

設置成功即安裝完成。
安裝fingbugs插件
Eclipse安裝fingbugs:
點擊“Help->InstallNew Software”,如下圖:

點擊“Add”,然后在彈出框“Name”輸入“findBugs”,“Location”輸入“http://findbugs.cs.umd.edu/eclipse”,點擊“OK”,如下圖:

選擇對應插件,然后點擊“next->next->finish”。

完成安裝之后重啟eclipse,右擊項目文件或目錄,會發(fā)現(xiàn)多了Findbugs的菜單,如下圖:

Android Studio安裝fingbugs:
在線安裝,首先打開Android?studio的設置中的插件,輸入findbugs,如下圖所示,點擊Browse查找

結果如下圖所示,選擇第一個安裝,如下圖:

安裝完畢之后重啟Android studio,然后你就能看到一個憤怒的小鳥圖標,恭喜你,完成安裝,接下來就能進行使用了;

四、測試執(zhí)行
工程導入
eclipse中導入工程步驟:
將工程包下載到本地
FileàimportàMaven(existing Maven projects)
(根據具體的開發(fā)工程進行選擇,可咨詢開發(fā))
Android Studio中導入工程步驟:
將工程包下載到本地
Fileànewàimport projects
代碼掃描
選擇對應的掃描規(guī)則及顆粒度(eclipse,Android無)
右擊工程名,選擇propertiesàfindbugs

選擇對應的掃描的工程名右擊,點擊findbugs按鈕,直至掃描完成
Eclipse:
可能遇到的問題:遇到找不到findbugs按鈕
定位:工程導入有問題
解決方法:重新導入,刪除eclipse工程并保留本地文件,再次導入(再不行就求助對應項目的開發(fā))

Android Studio:

問題分析
Eclipse:

Android Studio:

根據問題代碼的規(guī)則名稱,在fingbugs掃描規(guī)則問題分析手冊中查找具體分析。
問題分析請結合具體問題代碼分析,且在實際項目掃描過程中可能會遇到一些問題不在掃描規(guī)則文檔(見附錄)里面,進行百度搜索或根據問題描述及問題代碼自行分析。
問題記錄格式如下:

注:如遇到不在文檔中且對項目比較有影響的問題請根據規(guī)則問題分析表中格式規(guī)則記錄維護到分析表中。
五、附錄
1、Findbugs插件安裝教程參考:
參考:http://blog.csdn.net/gaofuqi/article/details/22679609
參考:http://blog.csdn.net/atangsir/article/details/50731550
2、findbugs掃描規(guī)則問題分析.docx
3、靜態(tài)掃描測試報告