13. アプリケーション検証機能

Javaアプリケーションのマイグレーション作業をサポートする機能です。


アプリケーション検証機能では、Developerのワークスペースにインポートされたプロジェクトソースフォルダやアプリケーションアーカイブファイルなどを検証し、変更が必要な箇所などをレポートに出力します。
さらにDeveloper上では、変更が必要な箇所をマーカー表示し、エディタ上での確認および修正が可能です。


以下の環境のアプリケーションに対して非互換検証を行うことができます。移行先の非互換検証の対象は、複数同時に検証が可能です。
移行元環境 WebOTX
WebLogic Server
JBoss EAP
Apache Tomcat
移行先非互換検証対象 JDK(JDK5,6,7,8,11,17,21,OpenJDK)
JavaEE
JakartaEE10
WebOTXフルプロファイル
WebOTXマイクロプロファイル
WebOTXコンテナ環境

尚、Developerをインストールしていない環境でもDeveloperからアプリケーション検証ツールをコピーすることで使用できます。
この場合、{AS_INSTALL}\Developer\migration_Toolkit フォルダを任意のディレクトリへコピーし、アプリケーション検証ツールコマンド(amt-cli.bat/sh)を使用します。
アプリケーション検証ツールコマンドによる実行方法については、[コマンドを使用したアプリケーション検証]を参照してください。

13.1. Developerを使用したアプリケーション検証

Developerを使用したアプリケーション検証の手順を説明します。
本機能を使用してアプリケーションを移行する際の大まかな流れは次のようになります。
  1. 当該プロジェクトに対してアプリケーション検証を実行する。
  2. レポートで検証結果を確認する。
  3. 修正が必要な指摘がある場合は、Developerのアプリケーション検証マーカーで検証結果を確認する。
  4. クイック・フィックス機能が利用可能な指摘の場合はクイック・フィックスを行う。
  5. クイック・フィックス機能が利用できない指摘の場合は手動編集で対応する。
  6. 全てを対処するか、ある程度の対処が完了したタイミングで、再度アプリケーション検証を実行する。
  7. 上記を、対処が必要なアプリケーション検証マーカーが表示されなくなるまで繰り返す。

13.1.1. アプリケーション検証対象

アプリケーション検証対象の選択は、Developerのプロジェクト・エクスプローラ上で行います。
アプリケーション検証機能の検証対象はJavaソースファイル、アプリケーションアーカイブファイル(*.war、*.ear、*.rar、*.zip、*.jar)ですが、Javaソースファイルの単独指定はできません。

フォルダ指定する際は、既定ではソースファイル、アプリケーションアーカイブファイル共に検証対象とします。
ソースファイルのみを検証対象とし、アプリケーションアーカイブファイルを検証対象外とする場合は、アプリケーション検証機能プロパティファイル(config.properties)の、sourceModeの設定値をtrueに変更します。
プロパティファイルについては、設定項目を参照してください。

Memo
アプリケーションアーカイブファイルの検証では、対象アーカイブファイル内に含まれるjar等のアーカイブファイルも検証対象となります。

Caution
フォルダを指定し、フォルダ内の複数のアーカイブファイルを同時に検証することも可能ですが、マーカー表示や出力レポートに問題が生じる場合があります。
[注意事項 > 大量かつ重複のアーカイブファイルを同時検証する際の注意事項]および、
[注意事項 > 重複アーカイブファイルに対するマーカー表示]を参照してください。

13.1.2. アプリケーション検証の実行

Windows のスタートメニューより「Developer's Studio」を選択し、Developerを起動します。
Developerのプロジェクト・エクスプローラで検証対象を右クリックします。


プルダウンメニュー > アプリケーション検証 を選択し、アプリケーションマイグレーション検証ツールウィザードを表示します。

Memo
ソースフォルダを対象とする際、プルダウンメニューにアプリケーション検証がない場合、[注意事項 > ソースフォルダに対してのアプリケーション検証について] を参照してください。


ウィザード画面上の 移行元のアプリケーション検証する非互換項目(複数選択可能)をチェックします。
レポート出力形式を選択し、 検証開始をクリックします。

検証完了後は以下の画面が表示され、Developerへのアプリケーション検証マーカー表示、検証結果のレポート出力を行います。
レポート出力先は、{AS_INSTALL}\Developer\migration_Toolkit\report\{検証対象フォルダ名}.reportです。


Caution
JavaDoc構文が存在するjavaソースファイルを検証した場合、ソースレポート内で指摘される行数がずれる事があります。
JavaDoc構文が存在する場合のソースレポートについては、[JavaDoc構文が存在する場合のSource Report (移行課題があるソースの詳細)]を参照してください。


Memo
レポート出力先に同名のフォルダが存在する場合は、新しいレポート内容が上書き保存されます。
既存のレポート内容を保存する場合は、対象フォルダをリネームして保存してください。


レポート内容については、[アプリケーション検証レポート]を参照してください。

Memo
検証処理時のログは、{AS_INSTALL}\Developer\migration_Toolkit\logに出力されます。

13.1.3. アプリケーション検証マーカーの確認

アプリケーション検証完了後、検証結果を基にアプリケーション検証マーカーがDeveloperに表示されます。
アプリケーション検証マーカーは次の箇所で確認できます。

Caution
アプリケーション検証実行により表示するアプリケーション検証マーカーは、開いているエディタ及び各ビューに非同期に表示します。
詳細は[注意事項 > アプリケーション検証マーカーは非同期に表示する]を参照してください。

Memo
アプリケーション検証マーカーはDeveloperを終了すると同時に自動で削除し、次回起動時には持ち越しません。
Developerを再起動した際は、再度アプリケーション検証を実行してください。

13.1.4. アプリケーション検証マーカーへの対処

アプリケーション検証マーカーは、指摘元となるルールにクイックフィックス情報が含まれているか否かで対処方法が異なります。
いずれかの対処を実行後は再度アプリケーション検証を実行し、マーカーが再度付与されないことを確認してください。
13.1.4.1. クイック・フィックス機能による対処
検証ルールにクイックフィックス情報が含まれている場合、マーカーの右クリックメニューよりクイック・フィックスをクリックし、表示されたクイック・フィックス画面より、問題への対処を自動で実行することが可能です。

フィックスの選択より適用する対処を選択し、終了をクリックします。
クイック・フィックス機能による対処を行うと、当該マーカーは自動で削除されます。
13.1.4.2. 手動による対処
検証ルールにクイックフィックス情報が含まれていない場合、手動編集により問題への対処を行ってください。
対処方法については、アプリケーション検証詳細ビュー説明リンクを参照してください。
なお手動による対処を行った場合は、当該マーカーは自動で削除されません。 手動でマーカーを削除後、再度アプリケーション検証を実行することで、対処済みのマーカーが再度付与されないことを確認してください。

13.1.5. 設定項目

config.properties

ファイルパス:{AS_INSTALL}\Developer\Studio\plugins\com.nec.webotx.appmigtool_{バージョン名}\config.properties

アプリケーション検証機能の変更可能な設定項目は以下の通りです。

属性名(attribute-name) 説明 既定値
sourceMode ソースファイル、アーカイブファイルを検証対象とするかどうかを設定します。
設定値による検証動作は以下のようになります。

true:
検証対象のアプリケーションに含まれているJavaソースファイル、xmlファイル等を解析します。
検証対象のアプリケーションにコンパイルされたアーカイブファイルが含まれている場合、アーカイブファイルのMaven座標等の情報を検証します。

false:
アーカイブファイルを検証対象とする場合に設定します。 検証対象のアプリケーションに含まれているアーカイブファイルを展開、デコンパイルします。
展開されたJavaソース、xmlファイル等を検証します。

false(V11.2以降)
output レポート出力フォルダを指定する場合に設定します。
設定しない場合、レポート出力先は {AS_INSTALL}\Developer\migration_Toolkit\report\{検証対象フォルダ名}.report となります。
指定したフォルダが存在しない場合、新たにフォルダを作成してレポートを格納します。
既にフォルダが存在する場合は、新しいレポート内容が上書き保存されます。
レポート出力フォルダを指定する場合、パス表記は [注意事項 > config.propertiesのoutputパラメータについて] を参照してください。
相対パスを指定する場合、レポート出力先は {AS_INSTALL}\Developer\Studio\{指定した相対パス}となります。
なし
userIgnorePath 検証除外設定ファイルを配置したフォルダパスを指定します。
詳細については、--userignorepathオプションを参照してください。
なし
rmiPort アプリケーション検証時に使用するRMIポートを設定します。 1100

Memo
プロパティファイルの設定値を変更した場合、Developerの再起動は必要ありません。


13.2. コマンドを使用したアプリケーション検証

アプリケーション検証機能では、Developerを起動しない、もしくは、インストールしていない環境でも利用可能なコマンドを提供しています。
アプリケーション検証ツールコマンド(amt-cli.bat/sh)の動作環境は以下の通りです。
動作環境
OS JDK メモリ
WebOTX AS、および
WebOTX Developer(with Developer's Studio)の環境に準ずる
Oracle JDK 11、17、21
OpenJDK 11、17、21
最小4GB
(8GB以上を推奨)

13.2.1. アプリケーション検証ツールの構成


アプリケーション検証ツールのフォルダ構成図を以下に示します。

アプリケーション検証ツールのフォルダ構成
アプリケーション検証ツールコマンドでのアプリケーション検証の実行方法(Windows)を説明します。

ここでは、アプリケーション検証ツールがインストールされているフォルダ({AS_INSTALL}\Developer\migration_Toolkit)を{TOOL_DIR} とします。
アプリケーション検証ツールコマンド(amt-cli.bat/sh)は、{TOOL_DIR}\bin配下に格納されています。
  1. コマンドプロンプトを起動します。
  2. CD コマンドで {TOOL_DIR} のフォルダにカレントを移動します。
  3. 環境変数JAVA_HOMEを設定し、以下のコマンドを実行します。
     {TOOL_DIR} > .\bin\amt-cli.bat --sourcemode --input {検証対象フォルダ} --output {検証結果出力先フォルダ} --target {移行先ターゲット}
  4. コマンド実行終了後、{検証結果出力先フォルダ}が作成され、{検証結果出力先フォルダ}配下にレポートが出力されます。
Deveoperがインストールされていない環境でアプリケーション検証ツールを使用する場合は、{AS_INSTALL}\Developer\migration_Toolkit フォルダ配下を全て、適当なフォルダにコピーしてご利用ください。
尚、Linux環境の場合、アプリケーション検証ツールコマンド(amt-cli.sh)に実行権限を付与後、実行してしてください。

Memo
アプリケーション検証ツールコマンドの詳細については、[その他機能 > アプリケーション検証ツールコマンド]を参照してください。


13.3. アプリケーション検証レポート

アプリケーション検証ツールが生成するアプリケーション検証レポート例を説明します。

ブラウザを使用して、レポート出力ディレクトリにあるindex.htmlファイルを開きます。
これにより、検証されたアプリケーションをリストするメインページが開きます。
アプリケーションリストの部品名称
番号 説明
検証されたアプリケーション名、またはフォルダ名
クリックすることで、Dashboard (レポートインデックス) 画面に遷移します。
検証されたアプリケーションのストーリーポイント(※1)
Cloud Mandatoryカテゴリごとの検出数(※2)
Informationカテゴリごとの検出数(※2)
総検出数
使用されている技術
ヘッダメニュー
ヘッダメニューから表示されるレポートは複数アプリケーションの情報が表示されます。

(※1) ストーリーポイント
(※2) カテゴリごとの検出数

テクノロジーの部品名称
番号 説明
検証されたアプリケーションに使用されている技術を機能別に分類し
「EJB」などの項目をクリックすると、3のソート対象データをもとに降順/昇順で並べ替えられます。
検証されたアプリケーション名
表示項目の「Name」をクリックすることでファイル名でソートされます。
検証されたアプリケーション名をクリックすることで検証されたアプリケーション単位の
Technologies (使用されている技術)に遷移します。
ソート対象データ
検証されたアプリケーションで使用されている技術がどのように分散されているかを示しています。
検証されたアプリケーションのサイズ、ライブラリの数、ストーリーポイントの合計が表示されます。


   検証されたアプリケーション単位のテクノロジーは、上記テクノロジーの部品名称2をクリックすることで表示されます。
   アプリケーションに見られるテクノロジーの概要であり、ユーザーが各アプリケーションの目的をすばやく理解できるように表示されます。



ディペンデンシーグラフ部品名称
番号 説明
複数のアプリケーション単位の各依存関係が表示されます。
選択されたファイル名、またはフォルダ名
グラフ表示されたアイコンが選択されている場合に表示されます。
グラフアイコンの凡例
※3rd-party JARs について
アプリケーション検証機能内のリポジトリからMaven座標を取得し、Maven座標が存在するライブラリを3rd-party JARsとします。
一部3rd-party JARsとして判定できないjarが存在します。[注意事項 > 3rd-party JARsについて] を参照してください。

Dashboard (レポートインデックス)の部品名称
番号 説明
カテゴリごとの検出インシデント数とストーリーポイント数
検出カテゴリ(※2)毎の検出インシデント数
検出カテゴリ(※2)の検出インシデント数とストーリーポイント数
ストーリーポイントレベル(※1)に対する検出インシデント数、ストーリーポイント数
ストーリーポイントレベル(※1)毎の検出インシデント数
カテゴリ別の検出インシデント数
Javaパッケージ毎の検出インシデント数
Javaパッケージ毎の検出インシデント数の構成比

(※1) ストーリーポイントレベル
(※2) 検出カテゴリ


次の表に、アクセスできるすべてのレポートとページを示します。
レポート 説明
Issues (移行課題) 注意を要するすべての問題の簡潔な要約を提供します。
Application Details (アプリケーション詳細) アプリケーション内で見つかった、移行中に注意が必要なすべてのリソースの詳細な概要を提供します。
Technologies (使用されている技術) 機能別にグループ化されたすべての埋め込みライブラリを表示し、各アプリケーションで使用されている技術を表示します。
Dependencies Graph (依存関係グラフ) 分析されたアプリケーション内で見つかったすべてのJavaパッケージの依存関係のグラフを表示します。
Dependencies (依存関係) アプリケーション内で見つかったすべてのJavaパッケージの依存関係を表示します。
Shaded-jar の解析についての注意事項があります。 [注意事項 > Shaded-jarの解析について] を参照してください。
Remote Services アプリケーション内で見つかったすべてのリモートサービス参照を表示します。
EJB Report アプリケーション内で見つかったEJBのリストを表示します。
情報内に「unknown」が出力される事象が発生する場合があります。[注意事項 > EJBレポートに出力される「unknown」情報について] を参照してください。
Server Resources アプリケーションのすべてのサーバーリソース(JNDIリソースなど)を表示します。
Ignored Files (除外ファイル) 処理されなかったアプリケーションで見つかったファイルを表示します。
詳細については、--userignorepathオプションを参照してください。

13.4. 注意・制限事項

13.4.1. 注意事項

13.4.1.1. config.propertiesのoutputパラメータについて
Windows環境でconfig.propertiesのoutputパラメータに絶対パスを指定する場合、C:\\reportの様にルートディレクトリを示す\を省略しないでください。
また、絶対パス指定、相対パスを指定する際は \\reportの様にパス切り文字 \ をエスケープ処理してください。
13.4.1.2. 要素の型を指定するクラスの検出について
javaファイルにおいて要素の型を指定するクラスの検証を行った場合、以下のパターンについては検出することができません。

・対象クラスがList等の要素の型に設定されている場合
(例)検出対象 ExtendedCopyOption の場合
List<ExtendedCopyOption>

・対象クラスに要素の型を設定した場合
(例)検出対象 Comparable の場合
Comparable<T>

これらの実装については対象クラスのImport文の検出より、直接使用部分については手動での確認を行う必要があります。
13.4.1.3. Shaded-jarの解析について
jar内部に複数プロジェクトを持つ Shaded-jar を含むアプリケーションを検証対象とした場合、DependenciesページにてMaven coordinatesのリンク先アドレスは正しいが、
Maven coordinatesのjarの表示名が異なるという事象が起きる場合があります。
13.4.1.4. EJBレポートに出力される「unknown」情報について
EJBアプリケーションに対するアプリケーション検証を行った際、EJBレポートに「unknown」の情報が表示されることがあります。

この事象は以下の場合に発生します。
・EJBアプリケーションのjavaファイルにEJB実装の誤りがある場合(EJBインターフェースの定義誤り等)
・検証対象のアプリケーション数(サイズ)が大きい場合

EJBアプリケーション検証時は、javaファイル解析と、ejb-jar.xmlのXML解析がマルチスレッドで処理されます。
それぞれの解析結果をリンクする形でEJBレポートが生成されますが、 検証処理が高負荷となる場合、EJB javaファイルの解析処理に時間を要し、レポート情報の生成処理に間に合わない場合があります。
この場合、検証結果の不定を示す「unknown」 が表示されます。
当該事象が発生した場合、EJBインターフェース等の実装状況を確認してください。
また、検証対象のアプリケーションを分割して検証する等の対応を行ってください。
13.4.1.5. 3rd-party JARsについて
commons-io-1.4.jarについては、内部リポジトリを参照している都合上3rd-partyとならず、JARs表記となります。
13.4.1.6. ソースフォルダに対してのアプリケーション検証について
ソースフォルダにパッケージのアイコンが付いた、Java要素と認識された状態 ()ではアプリケーション検証のメニューが表示されません。
以下操作を行うことでアプリケーション検証のメニューが表示されるようになります。
エクスプローラ右上のツリー内のコンテンツに適用するフィルターを選択および選択解除 () > コンテンツタブ > Java要素のチェックを外す
13.4.1.7. CSVレポートのDescriptionについて
一部CSVレポートにてDescriptionにメッセージが出力されないルールが存在します。
13.4.1.8. 大量かつ重複のアーカイブファイルを同時検証する際の注意事項
war, earと同時にそれらのアーカイブファイルに包含されるjarと同じものを同時に検証対象に含めると、
大量のアプリを同時に解析するなど高負荷状態となった場合、下記のようにレポートのタブが重複して表示されることがあります。
問題が発生した場合、検証対象から包含されているjarを除外して検証を行ってください。

13.4.1.9. javax.naming.Context.APPLETフィールドについて
コンパイルの最適化で"java.naming.applet"という文字列に置き換わる場合、アーカイブファイルでは検知されません。
13.4.1.10. クラスが検知されない例
検証除外設定を配置するディレクトリ({TOOL_DIR}\ignore)の、以下のファイルに定義されているパッケージを使用したクラスの場合、検知されないことがあります。
・blacklist-libraries.package-ignore.txt
・proprietary.package-ignore.txt
13.4.1.11. 継承したクラスでthisでの呼び出しが検知されない件について
継承したクラスでthisによるメソッドなどの呼び出しが検知されないことがあります。
13.4.1.12. アーカイブファイル内のファイルに対する検証
アーカイブファイル内のファイルに対する検証について、下記のファイルについてはマーカーを表示できません。
また、HTMLレポートには検証結果を出力しますが、指摘対象を示すファイルパスが一部不正となり、対象のアーカイブファイルが特定できない場合があります。
13.4.1.13. アプリケーション検証マーカーは非同期に表示する
Developerからアプリケーション検証を実行する際、表示するアプリケーション検証マーカーは、開いているエディタおよび各マーカービューに非同期に表示します。
Developerや端末の負荷が高い場合に、表示途中の状態でマーカーを選択した際に下記のエラーをDeveloperのログに出力する場合がありますが、動作に影響はありません。
13.4.1.14. module-info.javaに対するマーカー表示
検証対象フォルダに「module-info.java」が含まれる場合下記のマーカーを表示しますが、特に対応は不要です。
件名 Unparseable Java File
ルールID IndexJavaSourceFilesRuleProvider_1
13.4.1.15. 重複アーカイブファイルに対するマーカー表示
検証対象フォルダ配下に同一アーカイブファイルが存在し、当該アーカイブファイル(あるいはアーカイブファイル内のファイル)に対する指摘が存在する場合、アプリケーション検証マーカーが表示されない場合があります。
その為、アーカイブファイルに対する指摘を確認する際は、HTMLレポートを参照してください。
13.4.1.16. アプリケーション検証詳細ビューが表示されない
アプリケーション検証詳細ビューの表示には、Microsoft Edge WebView2ランタイムが必要です。
Microsoft Edge WebView2ランタイムは、Windows 11では既定でインストール済み、 Windows 10の場合はWindows Updateによりインストールされます。
インストールされていない場合は手動でインストールしてください。

13.4.2. 制限事項

特にありません。