处理程序执行的常见操作
创建 Web Service 入口点
许多框架都自己提供应用程序入口点。一个常见的示例是显示在配置文件或代码注释中指定的 Web Service。在应用程序配置文件或直接在字节码中搜索指定入口点后,可使用方法 F4FAction.addTaintedCallback
来在适当的方法中创建已感染数据入口点。
观察示例:在 EJB 2 中,Web Service 入口点通过在应用程序的配置文件(ejb-jar.xml)中定义端点来声明。然后,handleApp
会依次通过 ejb-jar.xml 中定义的 bean,只要定义了端点类,它会获取方法名称列表。然后,它会使用 addTaintedCallback
方法将其实施声明为 Web Service 入口点。
替换方法
现代的框架通常会利用虚拟函数和抽象来进行更为松散的业务组件耦合。虽然对于开发流程,这可以算作一项改进,但是,当虚拟函数和其实施之间的连接是在配置文件中处理的,或通过代码中的注释处理的时,也会带来静态分析方面的困难。F4FAction.replaceCalls
允许处理程序指定这些连接。
示例观察:在 EJB 2 中,每个 bean 都有一个声明其他 bean 如何与其交互的接口集合(本地和远程)。这意味着,只要调用 bean 的接口 class.method
,它将被具有实际 ImplementationClass.method
的框架替代。
从第 62 行开始,我们的示例处理程序将依次通过每个 bean,并获取其远程和本地接口,然后使用其实际实施替代这些接口。
日志记录
处理程序可使用 com.ibm.wala.andromeda.util.logging.TaintLogger
类在执行期间记录参考消息,并使错误消息显示在 AppScan® Source 用户界面中。TaintLogger
类使用 log4j
库。要记录消息,首先通过调用 TaintLogger.i().getLogger()
来获取 Logger
对象。然后,调用 Logger
上的记录方法(例如,Logger.warn
)以记录您需要的消息。日志消息将出现在 <data_dir>\logs\StaticAnalyzer_Errors.log(其中 <data_dir> 是 AppScan® Source 程序数据的位置,如中所述 安装和用户数据文件位置) 中。如果使用 Logger.error
或 Logger.fatal
来记录消息,那么错误消息也将显示在 AppScan® Source 用户界面的“控制台”视图中。