Configuration d'un examen à exécuter avec l'interface de ligne de commande

Vous pouvez utiliser un fichier de configuration pour personnaliser le mode d'exécution d'un examen à l'aide de l'interface de ligne de commande (à l'aide de la commande scan), dans lequel vous pouvez spécifier des cibles individuelles, mais aussi inclure ou exclure des cibles. En outre, vous pouvez utiliser le fichier de configuration afin d'indiquer des informations supplémentaires qui peuvent contribuer à générer des résultats d'examen complets.

Utilisation des fichiers de configuration

Un fichier de configuration peut servir à indiquer les cibles à inclure ou exclure lorsque vous effectuez un examen avec l'interface de ligne de commande Vous pouvez également spécifier des répertoires qui contiennent des artefacts de génération, mais aussi des informations de génération à utiliser lors de l'examen (par exemple, vous pouvez utiliser ce paramètre pour indiquer un compilateur JDK ou JSP spécifique).

Chaque fois que vous examinez un dossier avec l'utilitaire de ligne de commande (CLI), l'interface de ligne de commande recherche automatiquement un fichier appscan-config.xml dans le répertoire actuel. Si le fichier est détecté, il est automatiquement utilisé.

Modèle de fichier de configuration et paramètres

Lorsque vous préparez le fichier de configuration, utilisez le modèle suivant :

<Configuration attributes="true/false">
  <Targets>
    <Target outputs-only="true/false" path="scan_target_path">
      <CustomBuildInfo build_info="info"/>
      <Include>string_pattern</Include>
      <Exclude>string_pattern</Exclude>
    </Target>
  </Targets>
</Configuration>
Utilisez les attributs de configuration facultatifs pour indiquer un examen tiers et/ou open source comme suit :
  • thirdParty="<true or false>" active l'examen des artefacts tiers. La valeur par défaut est false.
  • enableSecrets="true" permet l'examen de fichiers source avec un scanner de codes secrets en plus des autres scanners pertinents.
  • openSourceOnly="<true or false>" désactive l'examen de sécurité et n'exécute qu'une analyse Open Source. La valeur par défaut est false.
  • secretsOnly="true" permet l'examen de fichiers source avec un scanner de codes secrets uniquement.
  • sourceCodeOnly="<true or false>" n'examine que les fichiers source et ignore les autres types de fichiers pris en charge (.dll, .exe). La valeur par défaut est false.
  • staticAnalysisOnly="<true or false>" désactive l'analyse Open Source et exécute uniquement l'analyse statique. La valeur par défaut est false.

Utilisez l'élément Targets pour indiquer les cibles à examiner. Les attributs de cible (Target) et les éléments enfant sont utilisés comme suit :

  • L'attribut Target de l'élément outputs-only est uniquement utilisé lorsque vous souhaitez examiner un répertoire et forcer l'interface de ligne de commande à rechercher uniquement les fichiers de sortie de génération (tels que les fichiers .jar, .war et .class). Par défaut, cet attribut est réglé sur false. Autrement dit, l'interface de ligne de commande recherche le répertoire afin de déterminer s'il s'agit d'une cible (comme un serveur d'application ou un espace de travail Eclipse) ou si le répertoire contient des éléments tels que des scripts de génération, des fichiers .pom et des fichiers make. Si vous voulez que la cible de l'examen soit traitée comme un simple répertoire, et si vous n'avez localisé que les fichiers de sortie, spécifiez outputs-only="true" dans l'élément Target.

    Par exemple, si vous indiquez <Target outputs-only="false" path="C:\Tomcat">, l'interface de ligne de commande suppose que la cible est votre serveur d'application Tomcat et recherche alors ses fichiers déployés .war. En revanche, si vous indiquez <Target outputs-only="true" path="C:\Tomcat">, l'interface de ligne de commande considère cet emplacement comme un répertoire et localise tous les fichiers de sortie de génération qu'il contient.

  • Utilisez l'attribut path de l'élément Target afin d'indiquer le chemin d'accès à une cible d'examen ou un répertoire de cibles d'examen (<scan_target_path>). Lorsqu'un répertoire est indiqué, tous ses sous-répertoires sont inclus dans l'examen.

    Par exemple, si vous indiquez <Target outputs-only="false" path="C:\WebSphere\AppServer85\profiles\AppSrv01">, l'interface de ligne de commande localise tous les fichiers .ear déployés dans le profil AppSrv01. Si vous indiquez <Target outputs-only="false" path="C:\WebSphere\AppServer85">, l'interface de ligne de commande localise tous les fichiers .ear déployés dans tous les profils.

  • Vous pouvez aussi spécifier les sous-éléments Target facultatifs suivants :
    • Vous pouvez utiliser l'élément CustomBuildInfo pour définir les attributs. En utilisant cette partie du modèle,
      
      <CustomBuildInfo build_info="info"/>
      vous pouvez indiquer les informations de génération en fonction du langage cible. Pour certains langages, il est possible de définir plusieurs attributs. Vous pouvez par exemple définir <CustomBuildInfo build_info_1="info_1" build_info_2="info_2" build_info_3="info_3"/>, en fonction du langage cible.
      • Pour Java, vous pouvez définir les attributs suivants :
        <CustomBuildInfo additional_classpath="dependency_path"
          jdk_path="JDK_path" jsp_compiler="JSP_compiler_path" package_includes="namespaces" package_excludes="namespaces"/>
        • Spécifiez des chemins d'accès aux classes supplémentaires avec l'attribut additional_classpath. Sous Windows, séparez plusieurs chemins d'accès aux classes par un point-virgule. Sous Linux et macOS, séparez les différents chemins d'accès aux classes avec deux points.
        • Utilisez l'attribut jdk_path pour spécifier le chemin d'accès à votre installation JDK.
        • Utilisez l'attribut jsp_compiler pour spécifier le chemin d'accès à votre compilateur JSP, par exemple :
          jsp_compiler="C:\Tomcat"
          jsp_compiler="C:\Program Files (x86)\IBM\WebSphere\AppServer"
          jsp_compiler="C:\Oracle"
        • Utilisez l'attribut package_includes pour remplacer les exclusions tierces existantes et n'examiner que les classes appartenant à ou aux espaces de noms donnés. Utilisez des points-virgules pour délimiter la liste des espaces de noms. Par exemple :
          package_includes="com.hcl.example;com.hcl.sample"
        • Utilisez l'attribut package_excludes pour ajouter les espaces de noms spécifiés à la liste existante des exclusions de tiers. Utilisez des points-virgules pour délimiter la liste des espaces de noms.
        • Utilisez l'attribut irx_minor_cache_home dans la balise <CustomBuildInfo> pour définir l'emplacement du cache de traitement parallèle Java. La valeur doit pointer vers l'emplacement utilisé pour le cache. Par exemple :
          <CustomBuildInfo irx_minor_cache_home="X:/mycache"/>
      • Pour JSP sous le Tomcat fourni, vous pouvez définir les attributs suivants :
        <CustomBuildInfo jsp_compiler_args="-ARGUMENTS"/>
        • Utilisez l'attribut jsp_compiler_args pour spécifier des arguments de ligne de commande du compilateur JSP afin de définir ou de supprimer le compilateur JSP.
      • Pour .NET (Windows uniquement), vous pouvez définir les attributs suivants :
        <CustomBuildInfo references="assembly_references"
          configuration="build_configuration"/>
        • Ajoutez des références d'assemblage à l'aide de l'attribut references. Séparez les différentes références à l'aide d'un point-virgule.
        • Incluez une configuration de génération pour la détection de la solution Visual Studio à l'aide de l'attribut configuration.
        • Utilisez l'attribut package_includes pour remplacer les exclusions tierces existantes et n'examiner que les classes appartenant à ou aux espaces de noms donnés. Utilisez des points-virgules pour délimiter la liste des espaces de noms. Par exemple :
          package_includes="com.hcl.example;com.hcl.sample"
        • Utilisez l'attribut package_excludes pour ajouter les espaces de noms spécifiés à la liste existante des exclusions de tiers. Utilisez des points-virgules pour délimiter la liste des espaces de noms.
      • Pour C/C++ (Windows uniquement), vous pouvez définir les attributs suivants :
        <CustomBuildInfo configuration="build_configuration"
          include_paths="include_directories" macros="macros" compiler_opts=/>
        • Utilisez l'attribut configuration pour inclure une configuration d'une génération.
        • Spécifiez des chemins d'inclusion en utilisant l'attribut include_paths. Séparez les différents chemins d'inclusion à l'aide d'un point-virgule.
        • Incluez des macros à l'aide de l'attribut macros. Séparez les différentes macros à l'aide d'un point-virgule.
        • Spécifiez des options de compilation à l'aide de l'attribut compiler_opts. Séparez les différentes options à l'aide d'un point-virgule.
    Remarque : les valeurs définies par ces attributs sont reportées sur des sous-cibles. Par exemple, si votre cible est un fichier EAR qui comprend les sous-cibles WAR et JAR, il est supposé que WAR et JAR ont les mêmes valeurs que celles définies pour le fichier EAR qui utilise ces attributs.
  • Utilisez l'élément enfant Include pour indiquer des schémas de fichier (<string_pattern>) à inclure lorsque vous effectuez un examen. Le comportement Include dépend du type de cible, tel qu'expliqué dans la section Comportement d'inclusion et d'exclusion des cibles. Pour indiquer plusieurs schémas include, ajoutez chaque schéma dans sa propre balise <Include></Include>. Par exemple,
    <Include>string_pattern_1</Include>
    <Include>string_pattern_2</Include>
    Remarque : Si vous spécifiez des masques include et exclude qui entrent en conflit, les masques exclude ont la priorité.
  • Utilisez l'élément enfant Exclude pour indiquer des schémas de fichier à exclure lorsque vous effectuez un examen. Le comportement Exclude dépend du type de cible, tel qu'expliqué dans la section Comportement d'inclusion et d'exclusion des cibles. Pour indiquer plusieurs schémas exclude, ajoutez chaque schéma dans sa propre balise <Exclude></Exclude>.
    Remarque : Si vous spécifiez des masques include et exclude qui entrent en conflit, les masques exclude ont la priorité.

Comportement d'inclusion et d'exclusion des cibles

Tableau 1. Comportement d'inclusion et d'exclusion des cibles

Ce tableau décrit le comportement des paramètres include et exclude, par type de cible.

Type de cible Comportement Exemples
.dll Si votre cible est un fichier .dll, l'inclusion ou l'exclusion de cibles n'a aucun impact sur l'examen, étant donné que ces fichiers ne peuvent pas contenir de cibles.
.jar Si votre cible est un fichier .jar, vous pouvez exclure des fichiers .class dans .jar. *MyClass.class
.war Si votre cible est un fichier .war, vous pouvez exclure .class, .jsp et des types de fichier JavaScript, ainsi que des fichiers .jar dans WEB-INF/lib.
Remarque : Par défaut, les fichiers .jar sont considérés comme du code tiers et ajoutés au chemin d'accès aux classes du fichier .war (et exclus par défaut).
com.ibm.*.jar
.ear Si votre cible est un .ear, vous pouvez inclure ou exclure des fichiers .jar et .war.
  • com.ibm.*.jar
  • JSPWiki.war
directory Si votre cible est un répertoire, vous pouvez inclure ou exclure le chemin ou le nom du fichier de n'importe quelle cible, n'importe quel type de cible ou fichier d'examen.
Remarque : La barre oblique de fin est requise lors de la spécification des répertoires.
  • com.ibm.*.jar
  • test/: inclut ou exclut l'ensemble du contenu du répertoire test/ et de ses sous-répertoires.
  • test/*.jar: inclut ou exclut tous les fichiers .jar du répertoire test/, mais pas de ses sous-répertoires.
  • myFile.js
Serveur Web (voir Configuration système requise pour en savoir plus sur les serveurs Web pris en charge) Si votre cible est un serveur Web, vous pouvez inclure ou exclure le nom de fichier de toutes les applications déployées sur le serveur.
  • JSPWiki.war
  • MyApp.ear
  • *.war (Lorsque la cible est un serveur Tomcat)
.sln (.NET) Si votre cible est un fichier de solution Visual Studio qui contient des projets .NET, vous pouvez inclure ou exclure le nom de fichier de tous les assemblages .NET produits par un projet dans la solution.
  • *\MyLib.dll
  • *\MyApp.exe
.sln (C/C++) Si votre cible est un fichier de solution Visual Studio qui contient des projets C/C++ non gérés, vous pouvez inclure ou exclure le nom de fichier de tous les projets.
  • *\myProject.vcxproj

Exemple de fichier de configuration

<Configuration>
  <Targets>
    <Target path="C:\test\MyApplication.ear">
      <CustomBuildInfo additional_classpath="C:\java\lib;C:\java2\lib"
        jdk_path="C:\Program Files\Java\jdk1.7" jsp_compiler="C:\Tomcat"/>
      <Include>ShoppingCart.war</Include>
      <Include>*Account.jar</Include>
      <Exclude>thirdPartyJars/</Exclude>
      <Exclude>*test*</Exclude>
    </Target>
  </Targets>
</Configuration>
Dans ce fichier de configuration :
  • C:\test\MyApplication.ear est la cible.
  • C:\java\lib et C:\java2\lib sont analysés afin de rechercher d'éventuelles dépendances à des fichiers de classe nécessaires à la compilation.
  • C:\Program Files\Java\jdk1.7 sert à localiser des dépendances.
  • Le compilateur C:\Tomcat est utilisé pour la compilation JSP au lieu de l'application Apache Tomcat version 7 incluse avec l'interface de ligne de commande.
  • Lorsque vous effectuez un examen avec l'interface de ligne de commande, le fichier ShoppingCart.war est inclus, tout comme tous les fichiers qui se terminent par *Account.jar. Tout ce qui est thirdPartyJars/ du fichier EAR est exclu, tout comme tous les fichiers qui comportent la chaîne test dans leur nom. En cas de conflits, les masques exclude ont la priorité. Par exemple, si le fichier EAR contient un fichier testCustomerAccount.jar, il est exclu, étant donné que le schéma de test exclude a la priorité sur le schéma *Account.jar include.