靜態代碼檢查報告

今天在下面刊載一篇小王同窗寫的靜態代碼檢查報告,圖文並茂,條理清晰。html

 

1. 工具說明java

 

  FindBugs 是一個靜態分析工具,它檢查類或者 JAR 文件,將字節碼與一組缺陷模式進行對比以發現可能的問題。有了靜態分析工具,就能夠在不實際運行程序的狀況對軟件進行分析。不是經過分析類文件的形式或結構來肯定程序的意圖,而是一般使用 Visitor 模式。Findbugs能夠在多個環境中運行,同時也能夠編寫本身的檢測器,功能比較完善。咱們平時能夠收集本身的或者是別人的開發經驗,把它作成檢測器來完善Findbugs的檢測體系。在網上的評價中,FindBugs工具雖然是機器掃描,效率高,可是還不夠靈活。session

  FindBugs的官網爲:http://findbugs.sourceforge.net/eclipse

  下載地址爲:http://findbugs.sourceforge.net/downloads.html工具

  工具能夠經過命令行方式和Eclipse插件的方式兩種方式來使用,因爲是開源軟件,網站上同時附帶了源代碼包的下載。測試

  Eclipse插件的下載地址爲:網站

  https://ncu.dl.sourceforge.net/project/findbugs/findbugs%20eclipse%20plugin/3.0.1/edu.umd.cs.findbugs.plugin.eclipse_3.0.1.20150306-5afe4d1.zipthis

2.使用過程spa

  首先把下載到的FindBugs對Eclipse插件解壓到Eclipse安裝目錄下的Plugin目錄,啓動Eclipse,在以前加載好的工程上右鍵找到Find Bugs菜單,點擊Find Bugs,開始執行靜態代碼審查。.net

 

  在Window菜單上選擇Show View中的Other,搜索FindBugs,選擇Bug Explorer,點擊OK,以下圖所示。

  在下方的Bug Explorer中能夠查看到工具找到了一個BUG,查看其詳情。

  將BUG導出爲HTML文件,獲得BUG信息以下圖。

3.缺陷統計

  發現Bug:共1個

Bug編號

B-01

Bug內容

Store of non serializable com.neuedu.model.UserAccount into HttpSession in com.neuedu.controller.UserAccountController.doLogin(String, String, HttpSession)

Bug提示

This code seems to be storing a non-serializable object into an HttpSession.

If this session is passivated or migrated, an error will result.

Bug等級

Troubling

可信度

High

模式

J2EE_STORE_OF_NON_SERIALIZABLE_OBJECT_INTO_SESSION

類別

BAD_PRACTICE (Bad practice)

Bug位置

UserAccountController.java: com.neuedu.controller.UserAccountController. doLogin

4. 與同行評審對比

  同行評審對程序的總體質量,可維護性、可擴展性、易用性和清晰性都進行評審,在評審過程過程當中咱們按照規範的步驟對軟件需求、設計、代碼和相關技術文檔進行仔細檢查,找到了6個缺陷和其餘代碼規範問題。

  而靜態代碼檢查是由程序按照固定的庫規則進行篩選覈查,只會針對代碼的淺層邏輯進行進行審查,雖然自動化體現了機器測試的優勢,但代碼可流暢運行但與需求不符合之類的缺陷並不能查驗。這是靜態代碼檢查的不足之處,實際應用中應當作到二者結合,使用靜態代碼檢查發現簡單的邏輯錯誤,再由同行評審進行人工測試。

5. 缺陷重點分析

  靜態代碼檢查發現了一個bug在UserAccountController.java文件中,該類爲用戶帳戶的控制器類com.neuedu.controller.UserAccountController,出錯發生在doLogin方法中的語句session.setAttribute("loginUser", userAccount);,在設置session的時候將不可序列化的帳戶類設置到session中,這可能在運行中使得會話不能正常保存。

  修復方法:將用戶帳戶信息類實現序列化接口並提供序列化方法,並從新測試session保存會話功能。

6. 靜態代碼檢查工具優缺點

  代碼檢查工具的優勢:自動化,使用機器掃描,效率較高,速度快,本次使用過程在1分鐘以內完成,能夠快捷地代替人力尋找bugs。

  代碼檢查工具的缺點:不夠靈活,只能在檢查工具備的bug庫裏面找到簡單的錯誤。對於邏輯性較強的bug和結果與指望值不符的問題檢測率較低。

相關文章
相關標籤/搜索