CLI を使用した IRX ファイル生成の構成

IRX ファイルの生成に構成ファイルを使用します。その場合は、個々のターゲットを指定する、つまりターゲットを含めるか除外するかを指定することができます。さらに、構成ファイルを使用して完全な IRX ファイルの生成に役立つ追加情報を指定することもできます。

構成ファイルの使用法

構成ファイルは、IRX ファイルの生成時に含めるターゲットや除外するターゲットを指定するために使用します。ビルド成果物を含むディレクトリーを指定し、IRX ファイルの生成中に使用するビルド情報を指定することもできます (例えば、この設定を使用して特定の JDK または JSP コンパイラーを指定できます)。
注: AppScan Go! を使用して、構成ファイルを作成できます。詳細については、 AppScan Go! を使用したスキャンの構成

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>
オプションの構成属性を使用して、サード・パーティーや SCA/オープン・ソースのスキャンを以下のようにカスタマイズします。
  • 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 エレメントを使用して、属性を設定できます。テンプレートのこの部分を使用して、
      
      <CustomBuildInfo build_info="info"/>
      ターゲット言語に応じたビルド情報を指定できます。一部の言語では、2 つ以上の属性を設定できます。例えば、ターゲット言語に応じて <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 属性を使用して、コンパイラー・オプションを指定します。複数のオプションはセミコロンで区切ります。
    注: これらの属性によって設定される値は、サブターゲットに引き継がれます。例えば、WAR サブターゲットと JAR サブターゲットを含む EAR ファイルがターゲットの場合、 WARJAR はこれらの属性を使用する 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 パターンが優先されます。

ターゲットの包含と除外の動作

1. ターゲットの包含と除外の動作

この表には、包含と除外の設定の動作がターゲット・タイプ別に示されています。

ターゲット・タイプ 動作 例(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 ファイルを含めるか除外することができます。
  • com.ibm.*.jar
  • JSPWiki.war
directory ターゲットがディレクトリーの場合は、ターゲットのパスまたはファイル名、ターゲット・タイプ、またはスキャン・ファイルを含めるか除外することができます。
注: ディレクトリーを指定する場合は、末尾のスラッシュが必要です。
  • com.ibm.*.jar
  • test/: test/ ディレクトリーとそのサブディレクトリーにあるものすべてを、含めるか除外することができます。
  • test/*.jar: test/ ディレクトリー内のすべての .jar ファイルを含めるか除外することができますが、このディレクトリーのサブディレクトリー内のファイルは対象外となります。
  • myFile.js
Web サーバー (サポートされている Web サーバーについてはシステム要件を参照) ターゲットが Web サーバーの場合は、サーバーにデプロイされるアプリケーションのファイル名を含めるか除外することができます。
  • JSPWiki.war
  • MyApp.ear
  • *.war (ターゲットが Tomcat サーバーの場合)
.sln (.NET) ターゲットが、.NET プロジェクトを含む Visual Studio ソリューション・ファイルである場合、ソリューション内のプロジェクトが作成した .NET アセンブリーのファイル名を含めるか除外することができます。
  • *\MyLib.dll
  • *\MyApp.exe
.sln (C/C++) ターゲットが、管理されていない C/C++ プロジェクトを含む Visual Studio ソリューション・ファイルである場合は、どのプロジェクトのファイル名でも含めるか除外することができます。
  • *\myProject.vcxproj

構成ファイルの例

<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\libC:\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 ファイルが入っている場合、このファイルは除外されます。これは、test exclude パターンが *Account.jar include パターンよりも優先されるためです。