CLI を使用した IRX ファイル生成の構成
IRX ファイルの生成に構成ファイルを使用します。その場合は、個々のターゲットを指定する、つまりターゲットを含めるか除外するかを指定することができます。さらに、構成ファイルを使用して完全な IRX ファイルの生成に役立つ追加情報を指定することもできます。
構成ファイルの使用法
appscan prepare
(Windows™) または appscan.sh prepare
(Linux™ と macOS) コマンドを実行して IRX ファイルを生成する場合は必ず、Static Analyzer コマンド行ユーティリティー が、現在のディレクトリーに appscan-config.xml
ファイルが存在するかを自動的にチェックします。ファイルが検出されると、自動的にそのファイルが使用されます。
別のディレクトリーに構成ファイルがあるか、または別のファイル名になっている場合は、appscan prepare
または appscan.sh prepare
コマンドを発行するときに -c
オプションを含めると、そのファイルを使用できます。この場合、(Windows™) では appscan prepare -c <configuration_file>
、また (Linux™ と macOS) では appscan.sh prepare -c <configuration_file>
を発行します。<configuration_file>
には、構成ファイルの絶対パスとファイル名が入ります。
構成ファイル・テンプレートおよび設定
構成ファイルを準備するときは、次のテンプレートを使用します。
<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>
enableSecrets="<true or false>"
は、すべてのソース・ファイルの秘密のスキャンを有効化します。デフォルトはfalse
です。secretsOnly="<true or false>"
は、静的分析を無効化して、ソース・ファイル内の秘密のみをスキャンします。デフォルトはfalse
です。sourceCodeOnly="<true or false>"
は、ソース・ファイルのみをスキャンし、サポートされている他のファイル・タイプ (.dll
、.exe
) は無視します。デフォルトはfalse
です。staticAnalysisOnly="<true or false>"
は、オープン・ソース分析を無効にして、静的分析のみを実行します。デフォルトはfalse
です。thirdParty="<true or false>"
は、サード・パーティー・アーティファクトのスキャンを有効にします。デフォルトはfalse
です。
Targets
エレメントを使用して、IRX ファイルの生成中にスキャンするターゲットを指示できます。ターゲット (Target
) の属性および子エレメントは次のように使用されます。
Target
エレメントのoutputs-only
属性は、ディレクトリーをスキャンし、コマンド行ユーティリティー を実行してビルド出力ファイル (.jar
、.war
、.class
ファイルなど) のみを検出する場合に使用します。デフォルトでは、この属性はfalse
に設定されます。これは、コマンド行ユーティリティー がディレクトリーを検索して対象がターゲット (アプリケーション・サーバーや Eclipse ワークスペースなど) かどうか、またはディレクトリーにビルド・スクリプト、Maven.pom
ファイル、make
ファイルなどのアイテムが含まれているかを判断することを意味します。スキャン・ターゲットが単純なディレクトリーとして扱われるようにして、出力ファイルのみを見つけるようにしたい場合、Target
エレメントにoutputs-only="true"
を指定します。例えば、
<Target outputs-only="false" path="C:\Tomcat">
を指定すると、コマンド行ユーティリティー はターゲットが Tomcat アプリケーション・サーバーであると想定し、デプロイされたその.war
ファイルを検索します。しかし、<Target outputs-only="true" path="C:\Tomcat">
を指定すると、コマンド行ユーティリティー はその場所をディレクトリーとして処理し、その中にあるビルド出力ファイルをすべて検出します。Target
エレメントのpath
属性を使用し、スキャン・ターゲットへのパスまたはスキャン・ターゲットのディレクトリー (<scan_target_path>
) を指定します。ディレクトリーが指定されると、そのサブディレクトリーもすべてスキャンに含まれます。例えば、
<Target outputs-only="false" path="C:\WebSphere\AppServer85\profiles\AppSrv01">
と指定すると、コマンド行ユーティリティー はAppSrv01
プロファイル内のデプロイされているすべての.ear
ファイルを検出します。<Target outputs-only="false" path="C:\WebSphere\AppServer85">
と指定すると、コマンド行ユーティリティー はすべてのプロファイル内のデプロイされているすべての.ear
ファイルを検出します。- 以下に示す、オプションの
Target
サブエレメントも指定できます。CustomBuildInfo
エレメントを使用して、属性を設定できます。テンプレートのこの部分を使用して、
ターゲット言語に応じたビルド情報を指定できます。一部の言語では、2 つ以上の属性を設定できます。例えば、ターゲット言語に応じて<CustomBuildInfo build_info="info"/>
<CustomBuildInfo build_info_1="info_1" build_info_2="info_2" build_info_3="info_3"/>
を設定できます。- Java の場合、次の属性を設定できます。
<CustomBuildInfo additional_classpath="dependency_path" jdk_path="JDK_path" jsp_compiler="JSP_compiler_path" package_includes="namespaces" package_excludes="namespaces"/>
additional_classpath
属性を使用して、追加のクラス・パスを指定します。Windows™ では、複数のクラス・パスはセミコロンで区切ります。Linux™ と macOS では、複数のクラス・パスはコロンで区切ります。jdk_path
属性を使用して、JDK がインストールされた場所へのパスを指定します。- JSP コンパイラーのパスを指定するには、
jsp_compiler
属性を使用します。例:jsp_compiler="C:\Tomcat"
jsp_compiler="C:\Program Files (x86)\IBM\WebSphere\AppServer"
jsp_compiler="C:\Oracle"
package_includes
属性を使用して、既存のサード・パーティーの除外をオーバーライドし、指定された名前空間のクラスのみをスキャンします。名前空間リストを区切る場合は、セミコロンを使用します。例:package_includes="com.hcl.example;com.hcl.sample"
package_excludes
属性を使用して、指定された名前空間をサード・パーティーの除外の既存のリストに追加します。名前空間リストを区切る場合は、セミコロンを使用します。<CustomBuildInfo>
タグのirx_minor_cache_home
属性を使用して、Java 並列処理キャッシュの場所を設定します。値は、キャッシュに使用される場所を指している必要があります。例:<CustomBuildInfo irx_minor_cache_home="X:/mycache"/>
- Tomcat JSP の場合、次の属性を設定できます。
<CustomBuildInfo jsp_compiler_args="-ARGUMENTS"/>
jsp_compiler_args
属性を使用して JSP コンパイラーのコマンド行引数を指定して、JSP コンパイラーを設定またはオーバーライドします。
- .NET (Windows のみ) の場合、次の属性を設定できます。
<CustomBuildInfo references="assembly_references" configuration="build_configuration"/>
references
属性を使用してアセンブリー参照を追加します。複数の reference はセミコロンで区切ります。configuration
属性を使用して、Visual Studio ソリューション・ディスカバリーのビルド構成を組み込みます。package_includes
属性を使用して、既存のサード・パーティーの除外をオーバーライドし、指定された名前空間のクラスのみをスキャンします。名前空間リストを区切る場合は、セミコロンを使用します。例:package_includes="com.hcl.example;com.hcl.sample"
package_excludes
属性を使用して、指定された名前空間をサード・パーティーの除外の既存のリストに追加します。名前空間リストを区切る場合は、セミコロンを使用します。
- C/C++ (Windows のみ) の場合、次の属性を設定できます。
<CustomBuildInfo configuration="build_configuration" include_paths="include_directories" macros="macros" compiler_opts=/>
configuration
属性を使用して、ビルド構成を組み込みます。include_paths
属性を使用して、インクルード・パスを指定します。複数のインクルード・パスはセミコロンで区切ります。macros
属性を使用して、マクロを組み込みます。複数のマクロはセミコロンで区切ります。compiler_opts
属性を使用して、コンパイラー・オプションを指定します。複数のオプションはセミコロンで区切ります。
- Java の場合、次の属性を設定できます。
注: これらの属性によって設定される値は、サブターゲットに引き継がれます。例えば、WAR サブターゲットと JAR サブターゲットを含む EAR ファイルがターゲットの場合、 WAR と JAR はこれらの属性を使用する EAR ファイルに設定されたものと同じ値を持つものと想定されます。 Include
子エレメントを使用して、IRX ファイルの生成時に包含するファイル・パターン (<string_pattern>
) を指定します。Include
動作は、「ターゲットの包含と除外の動作」セクションに概説されているように、ターゲット・タイプによって異なります。複数のinclude
パターンを指定するには、<Include></Include>
タグに各パターンを追加します。例えば、以下のようにします。<Include>string_pattern_1</Include> <Include>string_pattern_2</Include>
注: 競合するinclude
パターンとexclude
パターンを指定した場合、exclude
パターンが優先されます。Exclude
子エレメントを使用して、IRX ファイルの生成時に除外するファイル・パターンを指定します。Exclude
動作は、「ターゲットの包含と除外の動作」セクションに概説されているように、ターゲット・タイプによって異なります。複数のexclude
パターンを指定するには、<Exclude></Exclude>
タグに各パターンを追加します。注: 競合するinclude
パターンとexclude
パターンを指定した場合、exclude
パターンが優先されます。
ターゲットの包含と除外の動作
ターゲット・タイプ | 動作 | 例(X) |
---|---|---|
.dll | ターゲットが .dll ファイルの場合、これらのファイルにはターゲットを含めることができないため、ターゲットの包含または除外がスキャンに影響することはありません。 | |
.jar | ターゲットが .jar ファイルの場合、.jar から .class ファイルを除外できます。 |
*MyClass.class |
.war | ターゲットが .war ファイルの場合、.class、.jsp、および JavaScript ファイル・タイプおよび .jar ファイルを WEB-INF/lib から除外できます。 注: デフォルトでは、.jar ファイルはサード・パーティー・コードとして処理され、.war ファイルのクラス・パスに追加されます (デフォルトで除外されます)。 |
com.ibm.*.jar |
.ear | ターゲットが .ear の場合、.jar および .war ファイルを含めるか除外することができます。 |
|
directory | ターゲットがディレクトリーの場合は、ターゲットのパスまたはファイル名、ターゲット・タイプ、またはスキャン・ファイルを含めるか除外することができます。 注: ディレクトリーを指定する場合は、末尾のスラッシュが必要です。 |
|
Web サーバー (サポートされている Web サーバーについてはシステム要件を参照) | ターゲットが Web サーバーの場合は、サーバーにデプロイされるアプリケーションのファイル名を含めるか除外することができます。 |
|
.sln (.NET) | ターゲットが、.NET プロジェクトを含む Visual Studio ソリューション・ファイルである場合、ソリューション内のプロジェクトが作成した .NET アセンブリーのファイル名を含めるか除外することができます。 |
|
.sln (C/C++) | ターゲットが、管理されていない C/C++ プロジェクトを含む Visual Studio ソリューション・ファイルである場合は、どのプロジェクトのファイル名でも含めるか除外することができます。 |
|
構成ファイルの例
<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 はターゲットです。
- C:\java\lib と C:\java2\lib が検索され、コンパイルに必要なクラス・ファイルの依存関係を見つけます。
- C:\Program Files\Java\jdk1.7 が依存関係を見つけるために使用されます。
- JSP コンパイルには、Apache Tomcat バージョン 7 アプリケーション (Static Analyzer コマンド行ユーティリティー に含まれているもの) ではなく C:\Tomcat コンパイラーが使用されます。
- IRX ファイルの生成時には、ShoppingCart.war ファイルが含まれるほか、名前が *Account.jar で終わるファイルもすべて含められます。EAR ファイルの thirdPartyJars/ 内のものはすべて除外され、ファイル名に test という文字列が含まれるファイルもすべて除外されます。競合が存在する場合は、
exclude
パターンが優先されます。例えば、EAR ファイルに testCustomerAccount.jar ファイルが入っている場合、このファイルは除外されます。これは、testexclude
パターンが *Account.jarinclude
パターンよりも優先されるためです。