由處理程式執行的一般動作
建立 Web 服務進入點
許多架構提供自己的應用程式進入點。一般常見的範例是對外公開配置檔或程式碼中的註釋所識別的 Web 服務。在應用程式的配置檔或直接在位元組碼中搜尋指定的進入點之後,可使用 F4FAction.addTaintedCallback
方法在適當的方法建立受汙染的資料進入點。
觀察這個範例:在 EJB 2,是藉由在應用程式的配置檔 (ejb-jar.xml) 中定義端點,以宣告 Web 服務進入點。然後,handleApp
會循環處理在 ejb-jar.xml 中宣告的所有 Bean,如果有定義端點類別,就會取得方法名稱的清單。接著,使用 addTaintedCallback
方法,將其實作宣告為 Web 服務進入點。
取代方法
現代的架構經常會使用虛擬函數和抽象,使商業元件更加鬆散地耦合。雖然這可以改良開發處理程序,但是當虛擬函數及其實作之間的關連性,是在配置檔或透過程式碼中的註釋來處理時,將會對靜態分析帶來困難。F4FAction.replaceCalls
可讓處理程式指定這些關連性。
觀察這個範例:在 EJB 2,每一個 Bean 有一組介面(本端或遠端),宣告其他的 Bean 該如何來互動。這表示,只要呼叫 Bean 的 class.method
介面,都會被架構取代為實際的 ImplementationClass.method
。
從第 62 行開始,範例處理程式迴圈處理每一個 Bean,取得其遠端和本端介面,並將介面取代為實際的實作。
Logging
在執行期間,處理程式可以使用 com.ibm.wala.andromeda.util.logging.TaintLogger
類別來記載具參考價值的訊息,並讓錯誤訊息出現在 AppScan® 源 使用者介面中。TaintLogger
類別會運用 log4j
程式庫。如果要記載訊息,請先呼叫 TaintLogger.i().getLogger()
,取得 Logger
物件。然後在 Logger
上呼叫記載方法(例如 Logger.warn
),以記載您要的訊息。日誌訊息將出現在 <data_dir>\logs\StaticAnalyzer_Errors.log(其中 <data_dir> 是 AppScan® 源 程式資料的位置,如所述 安裝和使用者資料檔位置) 中。如果使用 Logger.error
或 Logger.fatal
來記載訊息,錯誤訊息也會出現在 AppScan® 源 使用者介面的「主控台」視圖中。