Traitement parallèle pour les applications Java

L'analyse Java utilise désormais des techniques d'analyse parallèles, ce qui permet de générer plus rapidement les fichiers IRX. Cette approche remaniée de l'analyse met également en mémoire cache les fichiers de classe convertis au format d'analyse sur le système client, analysant la copie stockée au lieu de la régénérer à chaque fois que l'analyse est effectuée.

Le traitement parallèle découpe le code en morceaux plus petits et plus facilement analysables. Ces plus petits morceaux de code peuvent être examinés en même temps. Cela nécessite non seulement moins d'espace mémoire et d'espace UC, mais les résultats sont aussi disponibles plus rapidement.

Remarque : Le traitement parallèle est le comportement par défaut. Utilisez les propriétés décrites dans cette rubrique pour personnaliser davantage les examens, ou désactivez le traitement parallèle.

Propriétés générales du traitement parallèle

Pour définir la propriété dans le client qui exécute appscan prepare, ajoutez -D au début de la propriété.
Remarque : Les options de ligne de commande utilisées pour le traitement parallèle s'appliquent à l'interface de ligne de commande et aux plug-ins Maven et Gradle.
Propriété Valeurs Description
USE_SLICER

true|false

Par défaut : true
La valeur true active l'utilisation du traitement parallèle.
IRX_MINOR_CACHE_HOME $user.home/.appscan/irx_cache Spécifie l'emplacement du cache des fichiers. Les lecteurs UNC, les unités mappées Windows ou les montages Linux peuvent être utilisés ici.
DISABLE_CACHE true

Valeur par défaut : non définie

Empêche l'utilisation du cache. Cela forcera la réexécution du processus de génération IR sur chaque fichier de classe, même s'il existe une entrée de cache.

Exemples

Exécutez avec le traitement parallèle activé et le cache du système de fichiers stocké dans $user.home/.appscan/irx_cache :
  • CLI
    $ appscan.sh prepare 
  • Gradle
    gradle appscan-prepare
  • Maven
    mvn com.hcl.security:appscan-maven-plugin:prepare
Exécutez avec le traitement parallèle activé et évitez d'utiliser le cache :
  • CLI
    $ appscan.sh prepare -DDISABLE_CACHE=true
  • Gradle
    gradle appscan-prepare -DDISABLE_CACHE=true
  • Maven
    mvn com.hcl.security:appscan-maven-plugin:prepare -DDISABLE_CACHE=true
Définissez le cache de fichiers pour qu'il utilise le lecteur mappé s: dans le répertoire irx_cache :
  • CLI
    > appscan.bat prepare -DIRX_MINOR_CACHE_HOME=s:\\irx_cache
  • Gradle
    gradle appscan-prepare -DIRX_MINOR_CACHE_HOME=s:\\irx_cache
  • Maven
    mvn com.hcl.security:appscan-maven-plugin:prepare -DIRX_MINOR_CACHE_HOME=s:\\irx_cache
Exécuter avec traitement parallèle désactivé :
  • CLI
    $ appscan.sh prepare -DUSE_SLICER=fals
  • Gradle
    gradle appscan-prepare -DUSE_SLICER=fals
  • Maven
    mvn com.hcl.security:appscan-maven-plugin:prepare -DUSE_SLICER=fals

Journaux

Les journaux suivants sont générés dans le cadre du traitement parallèle :
  • scan.manifest  : Ce fichier est généré dans le cadre de la génération du fichier IRX et répertorie tous les éléments qui ont été découverts. Il fournit une liste des langues et artéfacts qui ont été examinés pour chacune des langues. Les artéfacts tiers sont exclus par défaut.
  • scan.mainfest.json : Contient les mêmes informations que le fichier scan.manifest file au format JSON pour une analyse syntaxique plus facile.
  • StaticAnalyzer-Errors.slice.log Fournit les erreurs qui auraient pu se produire dans une tranche si le fichier IRX n'est pas généré avec succès. Il répertorie le numéro de tranche et le message d'erreur correspondant à cette tranche. Si ce fichier est vide, il n'y a alors aucun message d'erreur associé à la génération du fichier IRX dans les tranches.

  • stage.stats.json : Décrivez les packages analysés pour Java, les fichiers au format zip transférés (ear, jar, war, rar) et l'empreinte mémoire de chacun de ces fichiers au format zip les plus volumineux à extraire.
  • slice.prepare.stats.json : Contient chaque fichier de classe et son compartiment associé, et indique s'il a été extrait ou non du cache. S'il n'est pas extrait du cache, le temps qu'il a fallu pour générer le fichier IPVA de la tranche.

Compartiments

Chaque compartiment dispose d'un chiffre comme nom de dossier sous le répertoire des tranches. Dans le répertoire des journaux de chaque tranche dans le répertoire slices/<language>/<bucket_number>/logs, un fichier scan.manifest répertorie les artefacts et les langages présents dans ce compartiment.

Le fichier slice.prepare.stats.json contient également des informations d'association de compartiment pour chaque fichier de classe analysé.

Résultats

Le nouveau mécanisme de tranche de programme modifie certaines signatures de constatation pour qu'elles soient légèrement différentes de ce qu'elles étaient auparavant. Cela peut entraîner la production d'une constatation similaire à une constatation déjà triée. Cela ne se produit que la première fois que l'analyse de tranche de programme est exécutée sur une application qui a déjà des constatations provenant du mécanisme d'examen précédent. Il se peut également que certains résultats soient considérés comme nouveaux et nécessitent un triage comme auparavant.