Actions communes exécutées par le gestionnaire

Créer un point d'entrée du service Web

Bon nombre d'infrastructures disposent de leurs propres points d'entrée dans une application. Un exemple classique consiste à exposer des services Web qui sont identifiés dans un fichier de configuration ou dans des annotations dans le code. Après recherche de points d'entrée désignés dans les fichiers de configuration ou directement dans le bytecode de l'application, la méthode F4FAction.addTaintedCallback peut être utilisée pour créer un point d'entrée de données entachées dans la méthode appropriée.

Observation dans l'exemple : Dans EJB 2, les points d'entrée du service Web sont déclarés en définissant des nœuds finaux dans le fichier de configuration de l'application (ejb-jar.xml). handleApp effectue alors une boucle via les beans déclarés dans ejb-jar.xml et chaque fois qu'une classe de noeud final est définie, il obtient la liste des noms de méthode. Il déclare ensuite leurs implémentations en tant que points d'entrée de service Web à l'aide de la méthode addTaintedCallback.

Remplacer une méthode

Les infrastructures modernes utilisent fréquemment des fonctions virtuelles et une abstraction pour associer plus légèrement des composants professionnels. Bien qu'il puisse s'agir d'une amélioration à apporter au processus de développement, il génère des difficultés pour l'analyse statique lorsque la connexion entre la fonction virtuelle et son implémentation est gérée dans un fichier de configuration ou via des annotations dans le code. F4FAction.replaceCalls permet à un gestionnaire de désigner ces connexions.

Observation dans l'exemple : Dans EJB 2, chaque bean dispose d'un ensemble d'interfaces (locales et distantes) qui indique la manière dont les autres beans peuvent interagir avec lui. Cela signifie que, chaque fois qu'une interface de bean class.method est appelée, elle est remplacée par le framework associé à la méthode ImplementationClass.method réelle.

A partir de la ligne 62, notre exemple de gestionnaire parcourt chaque bean en boucle, prend ses interfaces distantes et locales, puis les remplace par leurs implémentations réelles.

Journalisation

Un gestionnaire peut utiliser la classe com.ibm.wala.andromeda.util.logging.TaintLogger pour consigner des messages d'information pendant l'exécution et pour provoquer l'affichage de messages d'erreur dans l'interface utilisateur AppScan® Source. La classe TaintLogger utilise la bibliothèque log4j. Pour consigner un message, obtenez d'abord un objet Logger en appelant TaintLogger.i().getLogger(). Appelez ensuite les méthodes de consignation sur l'objet Logger (par exemple, Logger.warn) afin de consigner les messages souhaités. Les messages de journal apparaissent dans <data_dir>\logs\StaticAnalyzer_Errors.log(où <data_dir> est l'emplacement de vos données de programme AppScan® Source, comme décrit dans Emplacements des fichiers de données utilisateur et des fichiers d'installation). Si vous utilisez Logger.error ou Logger.fatal pour consigner un message, le message d'erreur s'affichera également dans la vue Console de l'interface utilisateur AppScan® Source.