2014-02-07
FindBugs是一套專為Java程式碼除錯的工具,採LGPL授權,利用Bug Pattern進行程式碼的比對,自動檢查出程式碼可能發生的錯誤。它分析的對象是Java bytecode (編譯出來的.class)檔案,即時沒有原始碼也還是能使用。在軟體發布之前可用它做一次預防檢查,就有機會減少Bug在實際使用時才發生的機會。FindBugs可以用Command-line方式執行,也有提供GUI的介面,可搭配Apache Ant或Eclipse等開發工具,讓程式碼錯誤偵測的工作變成自動化流程的一部分。
官方網站網址
http://findbugs.sourceforge.net/
安裝步驟
取得FindBugs套件壓縮檔,解壓縮之後在有安裝JRE (Java Runtime Environment)和圖形介面的機器上執行findbugs (Windows則用findbugs.bat)就能開始使用。也可以加上參數-textui來使用文字介面。JRE可以到網址:
http://www.java.com/zh_TW/download/manual.jsp
先參考這篇安裝 JRE 或 JDK
[研究] Oracle Java 7 Update 51 快速安裝程式(CentOS 6.5 x64)
http://shaurong.blogspot.com/2014/01/oracle-java-7-update-51-centos-65-x64.html
http://forum.icst.org.tw/phpbb/viewtopic.php?f=44&t=80711
安裝 (CentOS 6.5 x86_64)
wget http://jaist.dl.sourceforge.net/sourceforge/findbugs/findbugs-2.0.3.tar.gz
tar -zxvf findbugs-2.0.3.tar.gz
./findbugs-2.0.3/bin/findbugs
測試方法
我們拿JDK Source來測試
先去下面網址
http://java.sun.com/javase/downloads/?intcmp=1281
下載 jdk-7u51-linux-x64.rpm
安裝JDK,掃描JDK Source Code
[root@localhost ~]# rpm -Uvh jdk-7u51-linux-x64.rpm
[root@localhost ~]# cd /usr/java/jdk1.7.0_51/
[root@localhost ~]# unzip src.zip -d src/
[root@localhost ~]# ./findbugs-2.0.3/bin/findbugs -textui -html:plain.xsl -output jdk7u51.html -sourcepath /usr/java/jdk1.7.0_51/src/ -progress /usr/java/jdk1.7.0_51/jre/lib/rt.jar
Scanning archives (1 / 1)
2 analysis passes to perform
Pass 1: Analyzing classes (19060 / 19060) - 100% complete
Pass 2: Analyzing classes (19060 / 19060) - 100% complete
Done with analysis
The following classes needed for analysis were missing:
javax.crypto.SecretKey
sun.nio.cs.ext.EUC_TW$Decoder
sun.nio.cs.ext.EUC_TW$Encoder
sun.nio.cs.ext.DoubleByteEncoder
sun.nio.cs.ext.JIS_X_0201$Encoder
javax.crypto.spec.OAEPParameterSpec
javax.crypto.spec.PSource
javax.crypto.spec.PSource$PSpecified
javax.crypto.BadPaddingException
javax.crypto.Cipher
javax.crypto.spec.IvParameterSpec
javax.crypto.spec.SecretKeySpec
javax.crypto.SecretKeyFactory
javax.crypto.Mac
javax.crypto.spec.PBEKeySpec
javax.crypto.spec.DESKeySpec
com.oracle.jrockit.jfr.FlightRecorder
sun.security.ssl.SSLSocketImpl
javax.crypto.spec.DESedeKeySpec
javax.crypto.IllegalBlockSizeException
javax.crypto.KeyGenerator
sun.nio.cs.ext.JIS_X_0208_Encoder
sun.nio.cs.ext.JIS_X_0208_Decoder
sun.nio.cs.ext.JIS_X_0201$Decoder
sun.nio.cs.ext.JIS_X_0212_Encoder
sun.nio.cs.ext.JIS_X_0212_Decoder
javax.crypto.spec.PBEParameterSpec
javax.crypto.spec.DHParameterSpec
javax.crypto.CipherOutputStream
javax.crypto.CipherInputStream
javax.crypto.interfaces.DHPublicKey
javax.crypto.spec.DHPublicKeySpec
javax.crypto.interfaces.DHKey
sun.security.ssl.Krb5Helper
sun.nio.cs.ext.JIS_X_0201
javax.crypto.NoSuchPaddingException
sun.nio.cs.ext.EUC_TW
Warnings generated: 7661
Missing classes: 34
[root@localhost ~]#
掃描結果會標示出總共掃描的程式碼行數、可能存在問題的程式檔案位置和問題所在行數等資訊,建議的解決方法,並分成高和中的安全優先等級分類顯示出來。
報告在 jdk7u51.html檔案中。
(完)
[研究] FindBugs 1.5.3 (Java靜態程式原始碼檢測工具)
http://forum.icst.org.tw/phpbb/viewtopic.php?t=16300
[研究] Oracle Java 7 Update 51 快速安裝程式(CentOS 6.5 x64)
http://shaurong.blogspot.com/2014/01/oracle-java-7-update-51-centos-65-x64.html
http://forum.icst.org.tw/phpbb/viewtopic.php?f=44&t=80711
沒有留言:
張貼留言