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

進(jìn)入JDK安裝設(shè)置界面,是否需要更改路徑由安裝者而定。點(diǎn)擊“下一步”。

進(jìn)入JDK安裝設(shè)置界面,是否需要更改路徑由安裝者而定。點(diǎn)擊“下一步”。

等待Java安裝完畢,回到JDK安裝界面提示“已安裝成功”,點(diǎn)擊“關(guān)閉”。

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

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

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

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

b. 使用絕對(duì)路徑方式配置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官方網(wǎng)站可以下載。

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

在PATH里加入maven的bin的路徑

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

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




安裝完畢后,點(diǎn)擊重啟eclipse;

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

設(shè)置成功即安裝完成。
安裝fingbugs插件
Eclipse安裝fingbugs:
點(diǎn)擊“Help->InstallNew Software”,如下圖:

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

選擇對(duì)應(yīng)插件,然后點(diǎn)擊“next->next->finish”。

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

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

結(jié)果如下圖所示,選擇第一個(gè)安裝,如下圖:

安裝完畢之后重啟Android studio,然后你就能看到一個(gè)憤怒的小鳥圖標(biāo),恭喜你,完成安裝,接下來就能進(jìn)行使用了;

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

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

Android Studio:

問題分析
Eclipse:

Android Studio:

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

注:如遇到不在文檔中且對(duì)項(xiàng)目比較有影響的問題請(qǐng)根據(jù)規(guī)則問題分析表中格式規(guī)則記錄維護(hù)到分析表中。
五、附錄
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)掃描測試報(bào)告