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>
thirdParty="<true or false>"
active l'examen des artefacts tiers. La valeur par défaut estfalse
.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 estfalse
.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 estfalse
.staticAnalysisOnly="<true or false>"
désactive l'analyse Open Source et exécute uniquement l'analyse statique. La valeur par défaut estfalse
.
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émentoutputs-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é surfalse
. 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 fichiersmake
. 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écifiezoutputs-only="true"
dans l'élémentTarget
.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émentTarget
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 profilAppSrv01
. 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,
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="info"/>
<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"/>
- Spécifiez des chemins d'accès aux classes supplémentaires avec l'attribut
- 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.
- Utilisez l'attribut
- 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.
- Ajoutez des références d'assemblage à l'aide de l'attribut
- 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.
- Utilisez l'attribut
- Pour Java, vous pouvez définir les attributs suivants :
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. - Vous pouvez utiliser l'élément
- Utilisez l'élément enfant
Include
pour indiquer des schémas de fichier (<string_pattern>
) à inclure lorsque vous effectuez un examen. Le comportementInclude
dépend du type de cible, tel qu'expliqué dans la section Comportement d'inclusion et d'exclusion des cibles. Pour indiquer plusieurs schémasinclude
, 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 masquesinclude
etexclude
qui entrent en conflit, les masquesexclude
ont la priorité. - Utilisez l'élément enfant
Exclude
pour indiquer des schémas de fichier à exclure lorsque vous effectuez un examen. Le comportementExclude
dépend du type de cible, tel qu'expliqué dans la section Comportement d'inclusion et d'exclusion des cibles. Pour indiquer plusieurs schémasexclude
, ajoutez chaque schéma dans sa propre balise<Exclude></Exclude>
.Remarque : Si vous spécifiez des masquesinclude
etexclude
qui entrent en conflit, les masquesexclude
ont la priorité.
Comportement d'inclusion et d'exclusion des cibles
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. |
|
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. |
|
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. |
|
.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. |
|
.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. |
|
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>
- 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 testexclude
a la priorité sur le schéma *Account.jarinclude
.