Crucible是一個用于開發團隊的代碼檢測工具,有了Crucible團隊成員可以檢查、注釋、編輯代碼,并記錄結果。當發現一個潛在的代碼問題,你可以挑選出這條代碼行并做注釋。
FindBugs是基于Bug Patterns概念,查找javabytecode(.class文件)中的潛在bug,主要檢查bytecode中的bug patterns,如Null Point空指針檢查、沒有合理關閉資源、字符串相同判斷錯(==,而不是equals)等
Jupiter是什么?Jupiter?是一個開源的代碼審查工具,是集成在?Eclipse?下執行代碼審查工作一個很棒的工具Jupite的工作劃分為3個階段,分別是:IndividualPhase個人階段,表示個人審查階段。TeamPhase團隊階段,表示團隊審查階段。ReworkPhase修復階段,表示修改Bug階段。
什么是Code Review? Code Review(代碼評審)也稱代碼復查,是指通過閱讀代碼來檢查源代碼與編碼標準的符合性以及代碼質量的活動。 Jupiter提供了代碼行級別的評審批注功能,方便評審參與人了解具體是哪些行代碼存在問題。同時,它也比較符合常規的評審流程,被評審人提供待審代碼->評審人線下提出個人意見->組織討論會討論每個人提出的意見并確定問題及解決方案->被評審人修改代碼->評審人查看修改情況。 Jupiter支持在一個項目中的多次評審,多人協同參與評審,支持多種配置庫 如SVN、CVS等,支持簡單的評審流程,支持問題跟蹤。
PC-Lint工具當前最新版本為PC-LintV9.0,由GimpelSoftware公司發布()。PC-Lint在全球擁有廣泛的客戶群,許多大型的軟件研發組織都把PC-Lint檢查作為代碼走查的第一道工序。PC-Lint不但能夠對程式進行全局分析,識別沒有被適當檢驗的數組下標,報告未被初始化的變量,警告使用空指針連同冗余的代碼等,還能夠有效地提出許多程序在空間利用、運行效率上的改進點。
CheckStyle是SourceForge下的一個項目,提供了一個幫助JAVA開發人員遵守某些編碼規范的工具。它能夠自動化代碼規范檢查過程,從而使得開發人員從這項重要,但是枯燥的任務中解脫出來。 CheckStyle檢驗的主要內容 ·Javadoc注釋 ·命名約定 ·標題 ·Import語句 ·體積大小 ·空白 ·修飾符 ·塊 ·代碼問題 ·類設計 ·混合檢查(包活一些有用的比如非必須的System.out和printstackTrace) 從上面可以看出,CheckStyle提供了大部分功能都是對于代碼規范的檢查,而沒有提供象PMD和Jalopy那么多的增強代碼質量和修改代碼的功能。但是,對于團隊開發,尤其是強調代碼規范的公司來說,它的功能已經足夠強大。
質量是衡量一個軟件是否成功的關鍵要素。而對于商業軟件系統,尤其是企業應用軟件系統來說,除了軟件運行質量、文檔質量以外,代碼的質量也是非常重要的。軟件開發進行到編碼階段的時候,最大的風險就在于如何保證代碼的易讀性和一致性,從而使得軟件的維護的代價不會很高。
代碼審查技術學習目標掌握代碼分析和評審技術掌握自動化代碼分析工具的使用建筑工程師的第一堂課-關注細節關注并弄清楚橋梁修建細節,否則你建起來的橋就有可能坍塌。-《安全編程–代碼靜態分析》1940年TacomaNarrows大橋600英尺的一段坍塌落入普吉特灣。代碼審查對成本的節省黑盒測試的缺陷黑盒測試既不充分,而且效率也低。在系統完成之前,測試就無法開始,測試人員只有軟件版本發布時才能拿到版本進行測試。int
本模塊內容安全代碼審查的目的是要識別出會導致安全問題和事故的不安全編碼技術和漏洞。雖然可能很耗時,但代碼審查必須是項目開發周期中的常規事件,這是因為在開發時修復安全缺陷會比以后在產品部署或維護修復周期中再做這項工作節省大量的成本和工作量。本模塊幫助您審查使用Microsoft.NETFramework建立的托管ASP.NETWeb應用程序代碼。本模塊按功能區進行組織,并通過對所需審查的問題列出完整的列表,為您的代碼審查過程提供方法指導和框架.
第一章、序言1.1背景1.2編碼中的安全問題據美國IDC公司2006年對企業信息安全的調查和統計,70%以上的信息安全問題是因為應用系統自身的安全問題而遭到黑客的攻擊,而不是因為網絡;同時NIST對近幾年的信息安全的事故的跟蹤調查顯示,幾乎92%的信息安全事故都與軟件相關。*在軟件的編碼階段,主要軟件安全問題來源于如下幾個方面:軟件自身的代碼缺陷用戶惡意輸入不期望的連接在整個軟件系統中主要體現在如下幾個方面帶來安全隱患:輸入驗證與表示API誤用安全特征時間與狀態錯誤處理代碼質量封裝和環境等安全漏洞.
一、概述代碼審查(CodeReview)是消滅Bug最重要的方法之一,這些審查在大多數時候都特別奏效。由于代碼審查本身所針對的對象,就是俯瞰整個代碼在測試過程中的問題和Bug。并且,代碼審查對消除一些特別細節的錯誤大有裨益,尤其是那些能夠容易在閱讀代碼的時候發現的錯誤,這些錯誤往往不容易通過機器上的測試識別出來。1.1主要工作1、發現代碼中的bug; 2、從代碼的易維護性、可擴展性角度考察代碼的質量,提出修改建議。
靜態檢查:靜態測試包括代碼檢查、靜態結構分析、代碼質量度量等。它可以由人工進行,充分發揮人的邏輯思維優勢,也可以借助軟件工具自動進行。代碼檢查代碼檢查包括代碼走查、桌面檢查、代碼審查等,主要檢查代碼和設計的一致性,代碼對標準的遵循、可讀性,代碼的邏輯表達的正確性,代碼結構的合理性等方面;
Findbugs是一個在java程序中查找bug的程序,它查找bug模式的實例,也就是可能出錯的代碼實例,注意Findbugs是檢查java字節碼,也就是*.class文件。準確的說,它是尋找代碼缺陷的,很多我們寫的不好的地方,可以優化的地方,它都能檢查出來。例如:未關閉的數據庫連接。缺少必要的null?check,多余的?null?check,多余的if后置條件,相同的條件分支,重復的代碼塊,錯誤的使用了"==",建議使用StringBuffer代替字符串連加等等。而且我們還可以自己配置檢查規則(做哪些檢查,不做哪些檢查),也可以自己來實現獨有的校驗規則(用戶自定義特定的bug模式需要繼承它的接口,編寫自己的校驗類,屬于高級技巧)。
代碼檢查工具張琦2011.8三、靜態語法檢查二、代碼檢查工具分類一、代碼檢查的目的六、一個實例的分析報告五、衡量設計質量四、靜態邏輯Bug檢查代碼檢查的目的一個寫代碼的人提交的代碼,我們對它“要求”什么呢講述一個類(Class)自己的故事……---《實現模式》[美]KentBeck代碼的易維護性,來源于代碼結構、格式、命名等的統一代碼檢查的目的1、代碼檢查是“靜態”過程2、代碼檢查重點關注編碼的規范性,也關注代碼錯誤3、代碼檢查以多種維度進行檢查4、代碼檢查以量化的指標報告提供評價結論在代碼提交前、執行前對代碼進行質量保證
LOGISCOPE是法國Telelogic公司推出的專用于 軟件質量保證和軟件測試的產品。其主要功能是對 軟件做質量分析和測試以保證軟件的質量,并可做 認證和維護,特別是針對要求高可靠性和高安全性 的軟件項目和工程。
本地環境:ubuntu11.4,tomcat 6.0,mysql
軟件開發經歷反省 我們代碼中常見幾類問題 Quality Metrics Tools CheckStyle PMD FindBugs JSLink
什么是FindBugs FindBugs是一個靜態分析工具,它檢查類或者JAR文件,將字節碼與一組缺陷模式進行對比以發現可能的問題。有了靜態分析工具,就可以在不實際運行程序的情況對軟件進行分析。不是通過分析類文件的形式或結構來確定程序的意圖,而是通常使用Visitor模式。靜態分析工具承諾無需開發人員費勁就能找出代碼中已有的缺陷。當然,如果有多年的編寫經驗,就會知道這些承諾并不是一定能兌現。盡管如此,好的靜態分析工具仍然是工具箱中的無價之寶。FindBugs可以發現許多代碼中間潛在的bug。
靜態檢查:靜態測試包括代碼檢查、靜態結構分析、代碼質量度量等。它可以由人工進行,充分發揮人的邏輯思維優勢,也可以借助軟件工具自動進行。代碼檢查代碼檢查包括代碼走查、桌面檢查、代碼審查等,主要檢查代碼和設計的一致性,代碼對標準的遵循、可讀性,代碼的邏輯表達的正確性,代碼結構的合理性等方面;可以發現違背程序編寫標準的問題,程序中不安全、不明確和模糊的部分,找出程序中不可移植部分、違背程序編程風格的問題,包括變量檢查、命名和類型審查、程序邏輯審查、程序語法檢查和程序結構檢查等內容。”。
FindBugs1.3.9規則整理Findbugs中把影響代碼質量分為以下幾個部分:Security關于代碼安全性防護序號。