CLI を使用して実行するためのスキャンの構成

構成ファイルを使用して、コマンド行インターフェースでスキャンを実行する方法 (scan コマンドを使用) をカスタマイズできます。ここでは、個々のターゲットを指定したり、ターゲットを含めたり除外したりできます。さらに、構成ファイルを使用して完全なスキャン結果の生成に役立つ追加情報を指定することもできます。

構成ファイルの使用法

構成ファイルは、CLI を使用したスキャン時に包含または除外するターゲットを指定するために使用します。ビルド・アーティファクトを含むディレクトリーを指定し、スキャン中に使用するビルド情報を指定することもできます (例えば、この設定を使用して特定の JDK または JSP コンパイラーを指定できます)。

コマンド行ユーティリティー (CLI) を使用してフォルダーをスキャンすると、CLI は常に現行ディレクトリー内の appscan-config.xml ファイルを自動的にチェックします。ファイルが検出されると、自動的にそのファイルを使用します。

構成ファイル・テンプレートおよび設定

構成ファイルを準備するときは、次のテンプレートを使用します。

<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>" は、サード・パーティー・アーティファクトのスキャンを有効にします。デフォルトは false です。
  • openSourceOnly="<true or false>" は、セキュリティー・スキャンを無効にして、オープン・ソース分析のみを実行します。デフォルトは false です。
  • sourceCodeOnly="<true or false>" は、ソース・ファイルのみをスキャンし、サポートされている他のファイル・タイプ (.dll.exe) は無視します。デフォルトは false です。
  • staticAnalysisOnly="<true or false>" は、オープン・ソース分析を無効にして、静的分析のみを実行します。デフォルトは false です。

Targets エレメントを使用して、スキャンするターゲットを指示できます。ターゲット (Target) の属性および子エレメントは次のように使用されます。

  • Target エレメントの outputs-only 属性は、ディレクトリーをスキャンし、CLI を実行してビルド出力ファイル (.jar.war.class ファイルなど) のみを検出する場合に使用します。デフォルトでは、この属性は false に設定されます。これは、CLI がディレクトリーを検索して対象がターゲット (アプリケーション・サーバーや Eclipse ワークスペースなど) かどうか、またはディレクトリーにビルド・スクリプト、Maven .pom ファイル、make ファイルなどのアイテムが含まれているかを判断することを意味します。スキャン・ターゲットが単純なディレクトリーとして扱われるようにして、出力ファイルのみを見つけるようにしたい場合、Target エレメントに outputs-only="true" を指定します。

    例えば、<Target outputs-only="false" path="C:\Tomcat"> を指定すると、CLI はターゲットが Tomcat アプリケーション・サーバーであると想定し、デプロイされたその .war ファイルを検索します。しかし、<Target outputs-only="true" path="C:\Tomcat"> を指定すると、CLI はその場所をディレクトリーとして処理し、その中にあるビルド出力ファイルをすべて検出します。

  • Target エレメントの path 属性を使用し、スキャン・ターゲットへのパスまたはスキャン・ターゲットのディレクトリー (<scan_target_path>) を指定します。ディレクトリーが指定されると、そのサブディレクトリーもすべてスキャンに含まれます。

    例えば、<Target outputs-only="false" path="C:\WebSphere\AppServer85\profiles\AppSrv01"> と指定すると、CLI は AppSrv01 プロファイル内のデプロイされているすべての .ear ファイルを検出します。<Target outputs-only="false" path="C:\WebSphere\AppServer85"> と指定すると、CLI はすべてのプロファイル内のデプロイされているすべての .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 子エレメントを使用して、スキャン時に包含するファイル・パターン (<string_pattern>) を指定します。「ターゲットの包含と除外の動作」セクションで示しているように、Include の動作はターゲットのタイプによって異なります。複数の include パターンを指定するには、<Include></Include> タグに各パターンを追加します。例えば、次のようになります。
    <Include>string_pattern_1</Include>
    <Include>string_pattern_2</Include>
    注: 競合する include パターンと exclude パターンを指定した場合、exclude パターンが優先されます。
  • Exclude 子エレメントを使用して、スキャン時に除外するファイル・パターンを指定します。「ターゲットの包含と除外の動作」セクションで示しているように、Exclude の動作はターゲットのタイプによって異なります。複数の exclude パターンを指定するには、<Exclude></Exclude> タグに各パターンを追加します。
    注: 競合する include パターンと exclude パターンを指定した場合、exclude パターンが優先されます。

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

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

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

ターゲット・タイプ 動作
.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 アプリケーション (CLI に含まれているもの) ではなく C:\Tomcat コンパイラーが使用されます。
  • CLI を使用してスキャンを実行すると、 *Account.jar で終わるすべてのファイルと同様に ShoppingCart.war ファイルが包含されます。EAR ファイルの thirdPartyJars/ 内のものはすべて除外され、ファイル名に test という文字列が含まれるファイルもすべて除外されます。競合が存在する場合は、exclude パターンが優先されます。例えば、EAR ファイルに testCustomerAccount.jar ファイルが入っている場合、このファイルは除外されます。これは、test exclude パターンが *Account.jar include パターンよりも優先されるためです。