一、前言
火線(Fireline)的Jenkins官方插件已經上線,目前火線不僅能檢查出安卓代碼中的安全類問題和內存泄露問題,還兼容了阿里開源的Java開發規約(P3C項目),本文將以教程的形式幫助大家了解如何在Jenkins中使用火線插件做靜態代碼掃描。
提示:如果您是第一次使用Jenkins,請先前往文章【[新手教程] Jenkins 下載安裝配置教程】,本篇博客轉載:http://www.sohu.com/a/208421161_741445?qq-pf-to=pcqq.c2c
二、安裝步驟
Jenkins安裝火線(Fireline)插件
-
點擊左上角的Jenkinslogo,依次點擊系統管理->管理插件,
在插件頁面點擊可選插件按鈕,

-
在過濾欄輸入fireline,勾選查詢出來的Fireline Plugin插件,點擊直接安裝。

-
等待安裝成功后,點擊返回首頁,開始配置。

Jenkins配置火線
-
點擊創建一個新任務,輸入任務名稱,選擇構建一個自由風格的軟件項目,點擊確定。

-
在配置頁面的General欄輸入項目名稱,我這里輸入的CodeScan。

-
在“源碼管理”欄配置你想掃描的代碼,我這里輸入的是火線專屬測試項目的git地址:https://github.com/ariesliu/TestCasesProject

-
跳過構建觸發器和構建環境配置欄,在構建欄點擊增加構建步驟,在下拉列表中選擇Execute FireLine選項。

-
“構建”欄會出現火線相關的配置,報告路徑會有一個默認的地址,不需要輸入,默認報告會放在你的個人用戶的report目錄下,如圖所示。配置完成,點擊保存按鈕。

-
保存成功后,在調轉后的頁面點擊立即構建。

-
此時頁面會看到有一個任務正在執行,點擊任務編號,此處為#1。

-
在此次任務的詳情列表點擊Console Output欄,可以看到任務的執行過程。等待任務執行完成后,可以看到火線報告的路徑,如下圖所示。

-
打開該目錄的testReport.html,可以看到本次的代碼掃描結果。

在Jenkins中直接查看火線掃描結果
-
在以上所述的配置完成后,我們查看掃描結果報告需要每次自己手動打開文件夾,比較麻煩。我們可以通過一個配置,實現在Jenkins中直接查看火線的掃描結果。
首先我們要安裝一個新的插件HTML Publisher plugin,再次去往系統管理-> 管理插件 ->可選插件,搜索HTML Publisher plugin,點擊直接安裝,安裝成功后返回。

-
回到我們的項目CodeScan進行配置,這次只需要配置構建后操作欄,點擊增加構建后操作步驟下拉框,選擇Publish HTML reports選項。

-
點擊增加按鈕。在HTML directory to archive欄輸入火線報告的生成路徑,即在構建欄中火線默認的結果報告路徑,復制過來即可。在Index page[s]欄輸入testReport.html,這是火線默認生成的HTML報告的名稱。這兩項配置完成后點擊保存。

-
此時還沒有完成,因為火線的HTML報告用了JS進行更好的效果展示,我們需要在Jenkins中配置運行執行JS腳本,否則火線報告在Jenkins中的展示會錯亂。
前往系統管理->腳本命令行,在文本框中輸入System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")運行按鈕。

-
此時回到我們的項目CodeScan,點擊立即構建,構建完成后就可以點擊HTML Report欄直接查看火線報告了。

-
Jenkins中的火線結果報告。火線將比較嚴重的問題,例如安全類問題列為最高級別Block級別 ,內存泄露問題列為風險級別,代碼規范類問題(阿里Java規約)列為警告和優化級別。更多級別詳情可參考火線官網的規則文檔。

-
點擊問題詳情列表欄,可以看到問題的詳情。點擊每一行最右側的加號圖標,可以看到錯誤的代碼片段。

-
在Search欄輸入p3c關鍵字,可以過濾出所有阿里巴巴開發手冊(P3C)的規則發現的問題。

寫在最后:
非常感謝阿里開源的Java開發規約(P3C項目),在靜態代碼掃描的代碼規范方向,一直以來都沒有一個統一的標准,開發人員們對於代碼規范的理解和掌握能力參差不齊。在大廠的帶頭作用下統一化標准化之后,開發人員們更容易去認可靜態代碼掃描在代碼規范方向的檢測結果。
同時,火線(Fireline)也一直致力於靜態代碼掃描方向的研究,我們的主攻點是安卓代碼中的安全類問題和內存泄露問題,也是因為這兩類問題從開發人員角度來看,是更受關注和重視的。
另外,目前火線除了新上線的Jenkins插件,還有嵌入在開發人員編碼IDE中的Android Studio插件,歡迎各位推薦給開發人員使用,讓我們可以在全流程中保障代碼的質量:開發編寫代碼環節(Android Studio插件)-> 代碼編譯打包環節(Jenkins插件)。
