2014-02-07
FindBugs是Java靜態程式原始碼檢測工具,一套專為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
yum -y install java
#yum -y install java-1.7.0-openjdk-devel
export JAVA_HOME=/usr
wget http://jaist.dl.sourceforge.net/project/findbugs/findbugs/3.0.0/findbugs-3.0.0.tar.gz
tar zxvf findbugs-3.0.0.tar.gz
./findbugs-3.0.0/bin/findbugs
測試方法
我們拿JDK Source來測試,請手動下載 jdk-8u11-linux-x64.gz
[root@localhost ~]# tar zxvf jdk-8u11-linux-x64.gz
[root@localhost ~]# cd jdk1.8.0_11/
[root@localhost jdk1.8.0_11]# unzip src.zip -d src/
請注意下面 findbugs 程式路徑,和 rt.jar 路徑要依據實際情況修改
[root@localhost jdk1.8.0_11]# /root/findbugs-3.0.0/bin/findbugs -textui -html:plain.xsl -output output.html -sourcepath src/ -progress /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.65-2.5.1.2.el7_0.x86_64/jre/lib/rt.jar
Scanning archives (0 / 1)Aug 06, 2014 10:57:36 PM java.util.prefs.FileSystemPref erences$1 run
INFO: Created user preferences directory.
Scanning archives (1 / 1)
2 analysis passes to perform
Pass 1: Analyzing classes (18557 / 18557) - 100% complete
Pass 2: Analyzing classes (18557 / 18557) - 100% complete
Done with analysis
The following classes needed for analysis were missing:
sun.org.mozilla.javascript.Scriptable
sun.org.mozilla.javascript.Function
sun.org.mozilla.javascript.ScriptableObject
sun.org.mozilla.javascript.ClassShutter
sun.org.mozilla.javascript.ContextFactory
sun.org.mozilla.javascript.ImporterTopLevel
sun.org.mozilla.javascript.NativeJavaObject
sun.org.mozilla.javascript.WrapFactory
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
sun.org.mozilla.javascript.Context
sun.org.mozilla.javascript.Script
sun.org.mozilla.javascript.RhinoException
sun.org.mozilla.javascript.JavaScriptException
sun.org.mozilla.javascript.ScriptRuntime
sun.org.mozilla.javascript.Wrapper
sun.security.ssl.SSLSocketImpl
javax.crypto.spec.DESedeKeySpec
javax.crypto.IllegalBlockSizeException
sun.org.mozilla.javascript.Callable
sun.org.mozilla.javascript.NativeArray
sun.org.mozilla.javascript.NativeJavaArray
sun.org.mozilla.javascript.LazilyLoadedCtor
sun.org.mozilla.javascript.Synchronizer
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
sun.org.mozilla.javascript.EvaluatorException
javax.crypto.NoSuchPaddingException
sun.org.mozilla.javascript.NativeJavaClass
sun.nio.cs.ext.EUC_TW
sun.org.mozilla.javascript.Undefined
Warnings generated: 7309
Missing classes: 54
[root@localhost jdk1.8.0_11]#
掃描結果會標示出總共掃描的程式碼行數、可能存在問題的程式檔案位置和問題所在行數等資訊,建議的解決方法,並分成高和中的安全優先等級分類顯示出來。
報告在 output.html檔案中。
(完)
[研究] FindBugs 3.0.0 安裝 (CentOS 7.0 x64)
http://shaurong.blogspot.com/2014/08/findbugs-300-centos-70-x64.html
[研究] FindBugs 2.0.3 (Java靜態程式原始碼檢測工具)
http://shaurong.blogspot.com/2014/02/findbugs-203-java.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
沒有留言:
張貼留言