Java アプリケーションの並列処理

Java 分析で、並列分析手法を使用するようになりました。これにより IRX ファイルの生成にかかる時間が大幅に短縮されます。また、分析に対するこの手法の改訂により、変換されたクラス・ファイルがクライアント・システムで分析形式にキャッシュされ、分析が実行されるたびに再構築するのではなく、保存されたコピーを使用して分析が行われます。

並列処理によりコードが細かく分割され、各部分を分析用として簡単にスキャンできます。分割されたコードの細かい各部は同時にスキャンが可能です。これによりメモリの消費や CPU の領域を節約できるため動作が早くなります。

注: 並列処理はデフォルトの動作です。このトピックで説明したプロパティーを使用して、スキャンの実行をさらにカスタマイズするか、並列処理を終了します。

並列処理の一般的なプロパティー

appscan prepare を実行しているクライアントにプロパティーを設定するには、プロパティーの前に -D を付加します。
注: 並列処理に使用されるコマンド行オプションは、CLI と Maven プラグインおよび Gradle プラグインに適用されます。
プロパティ 説明
USE_SLICER

true|false

デフォルト: true
true に設定すると、並列処理を使用できるようになります。
IRX_MINOR_CACHE_HOME $user.home/.appscan/irx_cache ファイル・キャッシュの場所を指定します。ここではマッピングされた Windows と、UNC ドライブまたは Linux マウントを使用できます。
DISABLE_CACHE True

デフォルト: 未設定

キャッシュを使用しないようにします。これにより、キャッシュ・エントリーがある場合でも、各クラス・ファイルで IR 生成プロセスが強制的に再実行されます。

並列処理を有効にした状態で、$user.home/.appscan/irx_cache に保存されているファイル・システム・キャッシュを使用して実行します。
  • CLI
    $ appscan.sh prepare 
  • Gradle
    gradle appscan-prepare
  • Maven
    mvn com.hcl.security:appscan-maven-plugin:prepare
並列処理を有効にした状態で実行し、キャッシュを使用しないようにします。
  • CLI
    $ appscan.sh prepare -DDISABLE_CACHE=true
  • Gradle
    gradle appscan-prepare -DDISABLE_CACHE=true
  • Maven
    mvn com.hcl.security:appscan-maven-plugin:prepare -DDISABLE_CACHE=true
マッピングされたドライブ s:irx_cache ディレクトリーで使用するようにファイル・キャッシュを設定します。
  • CLI
    > appscan.bat prepare -DIRX_MINOR_CACHE_HOME=s:\\irx_cache
  • Gradle
    gradle appscan-prepare -DIRX_MINOR_CACHE_HOME=s:\\irx_cache
  • Maven
    mvn com.hcl.security:appscan-maven-plugin:prepare -DIRX_MINOR_CACHE_HOME=s:\\irx_cache
並列処理を無効にした状態で実行します。
  • CLI
    $ appscan.sh prepare -DUSE_SLICER=fals
  • Gradle
    gradle appscan-prepare -DUSE_SLICER=fals
  • Maven
    mvn com.hcl.security:appscan-maven-plugin:prepare -DUSE_SLICER=fals

ログ

並列処理の一環として、次のログが生成されます:
  • scan.manifest : このファイルは、IRX ファイル生成の一部として生成され、検出されたすべての項目がリストされます。各言語用にスキャンされた言語および成果物のリストが提供されます。デフォルトでは、サード・パーティーの成果物が除外されています。
  • scan.mainfest.json: 解析しやすいように、scan.manifest file と同じ情報が JSON 形式で格納されています。
  • StaticAnalyzer-Errors.slice.log: IRX ファイルが正常に生成されなかった場合にスライスで発生した可能性のあるエラーが提供されます。各スライスのスライス番号と対応するエラー・メッセージがリストされます。このファイルが空の場合は、スライスに IRX ファイル生成に関連するエラー・メッセージはありません。

  • stage.stats.json: Java 分析中のパッケージ、ステージングされた zip 形式のファイル (earjarwarrar)、およびそれぞれの大容量の zip 形式ファイルを解凍するのに要したメモリー・フットプリントの概要を示します。
  • slice.prepare.stats.json: 各クラス・ファイルとその関連バケットが、キャッシュから取得されたかどうかという情報とともに含まれています。キャッシュから取得されなかった場合、スライス IPVA ファイルの生成にかかった時間が示されます。

バケット

各バケットには、スライス・ディレクトリーの下にフォルダー名として番号が付いたフォルダーが含まれています。slices/<language>/<bucket_number>/logs ディレクトリー内にある各スライスの logs ディレクトリーには、そのバケットに存在する成果物と言語がリストされた scan.manifest ファイルがあります。

または、slice.prepare.stats.json ファイルに、分析中の各クラス・ファイルのバケットの関連付け情報が含まれている場合もあります。

結果

新しいプログラム・スライス・メカニズムでは、一部の検出結果のシグニチャーが変更され、以前と若干異なっています。そのため、既にトリアージされた検出結果と類似した検出結果が生成される場合があります。これは、以前のスキャン・メカニズムの検出結果が既に存在するアプリケーションに対して、初めてプログラム・スライス分析を実行する場合にのみ発生します。また、一部の検出結果を新しいものと見なして、以前と同様にトリアージする必要がある場合があります。