(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022161596
(43)【公開日】2022-10-21
(54)【発明の名称】非互換検出プログラム、非互換検出方法及び非互換検出装置
(51)【国際特許分類】
G06F 8/76 20180101AFI20221014BHJP
【FI】
G06F8/76
【審査請求】未請求
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2021066531
(22)【出願日】2021-04-09
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.JAVA
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100147164
【弁理士】
【氏名又は名称】向山 直樹
(72)【発明者】
【氏名】佐藤 剛志
(72)【発明者】
【氏名】山本 翼
(72)【発明者】
【氏名】中津 寿秀
(72)【発明者】
【氏名】長尾 貴浩
(72)【発明者】
【氏名】橋本 隆
【テーマコード(参考)】
5B376
【Fターム(参考)】
5B376AA14
5B376AA34
(57)【要約】
【課題】アプリケーション実行環境の移行に伴い、設定ファイルに発生する非互換の検出に要する時間を短縮させることができる技術を提供する。
【解決手段】第1のアプリケーション実行環境において動作するアプリケーションの設定ファイルの種類を特定する処理と、前記第1のアプリケーション実行環境から前記第1のアプリケーション実行環境とは異なる第2のアプリケーション実行環境への移行に伴って発生する非互換を含むと判定するための非互換検出パターンの情報と前記非互換が発生する設定ファイルの種類の情報とをそれぞれ対応づけた1以上の非互換検出ルールのうち、前記特定した設定ファイルの種類に応じた前記非互換検出ルールのみを適用して、前記特定した設定ファイルに発生する前記非互換を検出する処理と、をコンピュータに実行させる。
【選択図】
図10
【特許請求の範囲】
【請求項1】
第1のアプリケーション実行環境において動作するアプリケーションの設定ファイルの種類を特定する処理と、
前記第1のアプリケーション実行環境から前記第1のアプリケーション実行環境とは異なる第2のアプリケーション実行環境への移行に伴って発生する非互換を含むと判定するための非互換検出パターンの情報と前記非互換が発生する設定ファイルの種類の情報とをそれぞれ対応づけた1以上の非互換検出ルールのうち、前記特定した設定ファイルの種類に応じた前記非互換検出ルールのみを適用して、前記特定した設定ファイルに発生する前記非互換を検出する処理と、
をコンピュータに実行させることを特徴とする非互換検出プログラム。
【請求項2】
前記設定ファイルの種類を特定する処理において、前記設定ファイルの先頭から指定された範囲内に、ファイル種別を特定するキーワードが出現した場合にはファイル種別の特定を行うことを特徴とする、請求項1に記載の非互換検出プログラム。
【請求項3】
前記非互換を検出する処理において、検出した前記非互換に関する情報を出力することを特徴とする、請求項1又は2に記載の非互換検出プログラム。
【請求項4】
前記特定した設定ファイルにおいて、発生すべき回数分の第1の非互換を検出すると、前記特定した設定ファイルの種類に応じた前記非互換検出ルールの中から前記第1の非互換に関する非互換検出ルールを除外して前記非互換の検出処理をすることを特徴とする、請求項1から3の何れか一項に記載の非互換検出プログラム。
【請求項5】
コンピュータが実行する非互換検出方法であって、
第1のアプリケーション実行環境において動作するアプリケーションの設定ファイルの種類を特定する処理と、
前記第1のアプリケーション実行環境から前記第1のアプリケーション実行環境とは異なる第2のアプリケーション実行環境への移行に伴って発生する非互換を含むと判定するための非互換検出パターンの情報と前記非互換が発生する設定ファイルの種類の情報とをそれぞれ対応づけた1以上の非互換検出ルールのうち、前記特定した設定ファイルの種類に応じた前記非互換検出ルールのみを適用して、前記特定した設定ファイルに発生する前記非互換を検出する処理と、
をコンピュータが実行することを特徴とする非互換検出方法。
【請求項6】
第1のアプリケーション実行環境において動作するアプリケーションの設定ファイルの種類を特定する特定部と、
前記第1のアプリケーション実行環境から前記第1のアプリケーション実行環境とは異なる第2のアプリケーション実行環境への移行に伴って発生する非互換を含むと判定するための非互換検出パターンの情報と前記非互換が発生する設定ファイルの種類の情報とをそれぞれ対応づけた1以上の非互換検出ルールのうち、前記特定した設定ファイルの種類に応じた前記非互換検出ルールのみを適用して、前記特定した設定ファイルに発生する前記非互換を検出する検出部と、
を有することを特徴とする非互換検出装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、アプリケーション実行環境を移行する際に問題となる非互換を検出するための、非互換検出プログラム、非互換検出方法及び非互換検出装置に関するものである。
【背景技術】
【0002】
従来、情報処理装置において実行されるアプリケーションは、そのアプリケーションを実行するためのアプリケーション実行環境(システム環境)に合わせて作成されている。ここで、アプリケーション実行環境を異なる実行環境に移行する際、いわゆる非互換の問題が発生する場合がある。ここで、非互換とは、移行元のアプリケーション実行環境において実行可能なアプリケーションの全部又は一部が移行後のアプリケーション実行環境において実行できない(又は正常に動作しない)ことである。例えばJavaに関しては、アプリケーション実行環境のバージョンアップに伴ってJ2EE(Java 2 Platform, Enterprise Edition)からJakarta EE(Jakarta Enterprise Edition)に移行する際に非互換が発生することが知られている。
【0003】
非互換はアプリケーション実行環境の移行に伴って発生するため、このアプリケーション実行環境を定義する部分をアプリケーションのソースコードの外に出しておくことが行われている。これにより、ソースコード自体を修正することなく、外出し部分を修正するのみで非互換を回避することが可能となる。このアプリケーション実行環境をソースコードの外に定義したファイルを本願においてはシステム定義情報ファイルと称する。なお、システム定義情報ファイルはアプリケーションの設定ファイルの一種である。
【0004】
また、アプリケーションにおける非互換の検出を自動化する技術が知られている。例えば、特許文献1に開示の技術では、第1のアプリケーション実行環境と少なくとも一部が非互換の第2のアプリケーション実行環境でアプリケーションを実行する情報処理装置において、アプリケーションのマニフェストと呼ばれる非互換検出ルールを格納している。このマニフェストに基づいてアプリケーションをチェックすることにより、第2のアプリケーション実行環境におけるアプリケーションの非互換を検出する。
【先行技術文献】
【特許文献】
【0005】
【発明の概要】
【発明が解決しようとする課題】
【0006】
従来技術では、アプリケーションの非互換をチェックする場合、そのアプリケーションのシステム定義情報ファイルの全てに対して、全ての非互換検出ルールを適用している。ここで、近年ではアプリケーション実行環境の複雑化等により非互換検出ルールが膨大となっており、例えば、J2EEからJakarta EEに実行環境が移行する場合には300以上の非互換検出ルールが想定される。また、アプリケーションの大規模化に伴い、解析対象となるシステム定義情報ファイルも多数存在することが見込まれる(1事例では、1サーバーあたりおよそ1500のファイルが存在し、情報処理システムに含まれるサーバーも100台以上となることがある)。そのため、全てのシステム定義情報ファイルに対して1つずつ非互換検出ルールのチェックを行うことは、非互換の検出の所要時間が増大するという問題がある。
【0007】
そこで、本発明は上述した問題に鑑み、1つの側面によれば、アプリケーション実行環境の移行に伴い、設定ファイルに発生する非互換の検出に要する時間を短縮させることができる技術を提供することを目的とする。
【課題を解決するための手段】
【0008】
1つの態様では、第1のアプリケーション実行環境において動作するアプリケーションの設定ファイルの種類を特定する処理と、前記第1のアプリケーション実行環境から前記第1のアプリケーション実行環境とは異なる第2のアプリケーション実行環境への移行に伴って発生する非互換を含むと判定するための非互換検出パターンの情報と前記非互換が発生する設定ファイルの種類の情報とをそれぞれ対応づけた1以上の非互換検出ルールのうち、前記特定した設定ファイルの種類に応じた前記非互換検出ルールのみを適用して、前記特定した設定ファイルに発生する前記非互換を検出する処理と、をコンピュータに実行させる。
【発明の効果】
【0009】
1つの側面によれば、設定ファイルに存在する非互換の検出に要する時間を短縮させることができる。
【図面の簡単な説明】
【0010】
【
図3】ファイル種別特定キーワードリストの例を示す。
【
図4A】ファイル種別の特定ができるシステム定義情報ファイルの例を示す。
【
図4B】ファイル種別の特定ができないシステム定義情報ファイルの例を示す。
【
図9】システム定義情報ファイルの入出力の処理のフローチャートを示す。
【
図11】システム定義情報ファイルへの非互換検出ルール適用処理のフローチャートを示す。
【
図12】出力されるCSVレポートファイルの例を示す図を示す。
【
図14】非互換検出装置のハードウェア構成を例示するブロック図を示す。
【発明を実施するための形態】
【0011】
本発明を実施する実施例について、図面とともに説明をする。なお、本実施例は、発明を実現する態様の一つであり、実施例中の各処理の内容や実行順序等については、発明を実現できる範囲内で適宜変更可能である。
【0012】
図1は、本実施例に係る非互換検出装置の機能ブロック図である。非互換検出装置1は、収集部11、記憶部12、特定部13、検出部14、出力部15を含む。収集部11は、移行前のアプリケーションに含まれるシステム定義情報ファイルを収集する。
【0013】
記憶部12は、ファイル種別特定キーワード12aと、非互換検出ルール12bとを記憶する。記憶部12は、例えば、RAM(Random Access Memory)、ROM(Read Only Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子や、HDD(Hard Disk Drive)等の記憶装置に対応する。ファイル種別特定キーワード12aと非互換検出ルール12bについては後述する。
【0014】
特定部13は、アプリケーションに搭載されているシステム定義情報ファイルの種類を判定する。なお、システム定義情報ファイルとは、上述のとおりアプリケーションの設定ファイルの一種である。
【0015】
検出部14は、特定部13が特定したシステム定義情報ファイルの種類に基づき、選択した非互換検出ルールを適用することで、当該システム定義情報ファイルに含まれる非互換を検出する。
【0016】
出力部15は、例えば、検出部14が検出した非互換の情報についてレポートファイルに出力を行う。
【0017】
図2は、システム定義情報ファイルに含まれる各ファイルの種別を定義するために用いられる、ファイル種別定義ファイルの例を示したものである。ここで、ファイル種別とは、製品に搭載されている複数の機能のうちのどの機能のシステム定義情報ファイルであるかを示す情報のことである。例えば、記述20a及び記述20bは、ファイルの拡張子を定義している。例えば、記述20aより、定義されているファイルの拡張子は.xmlである。一方で、記述20bからは、定義されているファイルの拡張子が.txtであることがわかる。記述21a及び記述21bが指す“pattern”のタグの範囲内に記載された事項は、適合条件を表すパターンを定義している。記述21a及び記述21bのサブタグとして“xpath”や“regex”がある。“xpath”は、適合条件を表す“XPath”を定義しており、“regex”は、適合条件を表す正規表現を定義している。
図2の記述22a及び記述22bは、それぞれ“xpath”と“regex”で定義されたファイル種別特定キーワードを示している。ファイル種別定義ファイルより得た、ファイルの拡張子と、ファイル種別特定キーワードの情報とを用いて、
図3に示すファイル種別特定キーワードリストが作成される。
【0018】
図3は、ファイル種別特定キーワード31とファイルの拡張子32とを対応づけたものを一覧にしたファイル種別特定キーワードリストを示す。ここで、システム定義情報ファイルの種類ごとに有しているファイル種別特定キーワードは知られており、記憶部12に記憶されていてもよい。この場合、
図3に示すようにファイル種別特定キーワードリストは、ファイル種別特定キーワード31と、ファイルの拡張子32と、システム定義ファイルの名前33とが対応づけられる。例えば、
図3のデータ行34に記載のとおりCluster定義ファイルには、“J2eeClusterDefinition”というファイル種別特定キーワードがCluster定義ファイル内に存在することを示しており、ファイル名とファイル種別特定キーワードが対応づけられている。ファイル種別定義ファイルから得られた情報を一覧にしたものが、
図3で示すファイル種別特定キーワードリストである。なお、
図3は見やすいようにリスト化して記載しているが、ファイル種別特定キーワードリストは必ずしも一覧にまとめられている必要はない。ファイル種別特定キーワードとファイルの拡張子とが種類ごとに対応づけられていればよい。また、ここに記載したシステムファイル定義情報ファイルは一例であり、ここに記載されているものに限られない。
【0019】
次にファイルの種別を特定する方法について説明する。システム定義情報ファイルのフォーマットは決まっており、ファイル種別特定キーワード31が存在する場合には、ファイルにおける所定の記述位置、例えば、ファイルの先頭から2行目までに
図3に示したファイル種別特定キーワード31が出現することがわかっている。そのため特定部13は、まず解析対象のシステム定義情報ファイルを開き、例えば、当該ファイルの先頭から2行目までを読み込む。ファイル種別特定キーワードが出現した場合、特定部13は当該ファイルの種別の特定を
図3のファイル種別特定キーワードリストを参照して行う。ファイル種別特定キーワードが出現しない場合には、特定部13は、ファイルの3行目以降の読み込みは行わず、ファイルを閉じる。なお、システム定義情報ファイルの読み出し対象部分は、上述したファイルの先頭から2行目までには必ずしも限定されない。システム定義情報ファイルの読み出し対象部分は、システム定義情報ファイルのフォーマットや情報処理システムの態様に応じて適宜変更されてもよい。
【0020】
図4Aはファイル種別が特定できるシステム定義情報ファイルであり、
図4Bはファイル種別の特定ができないシステム定義情報ファイルの例である。例えば
図4Aでは、システム定義情報ファイルの2行目41に“J2eeClusterDefinition”というファイル種別特定キーワードが出現している。そのため、特定部13は、
図3のファイル種別特定キーワードリストを参照し、
図4Aのシステム定義情報ファイルはCluster定義ファイルであると特定できる。一方で、
図4Bのように、2行目までの部分42にファイル種別特定キーワードが出現しない場合、特定部13はシステム定義情報ファイルの種別を特定できない。なお、
図4Aでは2行目にファイル種別特定キーワードが出現しているため、ファイルの2行目まで読み込みを行ったが、1行目にファイル種別特定キーワードが出現した場合には、特定部13は以降の読み込み処理を省略してもよい。
【0021】
本実施例において、
図3のファイル種別特定キーワードリストに記載されるファイル種別は、全てのシステム定義情報ファイルのうち、非互換が発生する可能性のあるファイル種別となっている。したがって、本実施例においてファイル種別が特定されないシステム定義情報ファイル(言い換えれば、ファイル種別特定キーワードリストに示されない種別のシステム定義情報ファイル)は、非互換が発生する可能性がないシステム定義情報ファイルと見なすことができる。
【0022】
そのため、
図4Bに図示したファイルのように、ファイルの種別が特定されないファイルに対しては、後述する非互換の検出処理を行わなくてもよい。この場合、複数のシステム定義情報ファイルのうちファイルの種別が特定されないファイルについて非互換の検出処理が省略されるため、全体として非互換の検出に要する時間を削減できる。
【0023】
図5、
図6、
図7A及び
図7Bを用いて非互換検出ルールを作成する過程について説明する。非互換検出ルールは、ファイル種別と当該ファイル種別において出現する可能性のある非互換箇所を対応させたものである(
図8参照)。非互換検出ルールは、アセスメントプロファイル(
図5)、ルールセット定義ファイル(
図6)、ルール定義ファイル(
図7A、
図7B)から得られた情報を定義したものである。
【0024】
図5は、アセスメントプロファイルの例を示した図である。アセスメントプロファイルとは、アセスメントの設定を定義するファイルであり、適用すべき複数の非互換検出ルールの集合(以降、ルールセットと記載することがある)のリストが記載されている。
図5の記述51、記述52は、アプリケーションが新たな環境に移行する際のルールセットについて示している。
【0025】
例えば、
図5の記述51には、“migration-j2ee-jakartaee8”と記載があり、アプリケーション実行環境がJ2EE環境からJakarta EE 8環境に移行する際のルールセットを定義している。同様に、記述52には、“migration-j2ee-javaee7”と記載があり、アプリケーション実行環境がJ2EE環境からJava EE 7環境に移行する場合のルールセットであることを示している。また、記述51、記述52は後述するルールセット定義ファイルのルールセットIDとなる。記述53、記述54は、アプリケーション実行環境がJ2EE環境からJakarta EE 8環境に移行する場合のルール定義ファイルのルールIDである。ルール定義ファイルについては
図7A及び
図7Bを用いて後述する。
【0026】
記述55は、アプリケーション実行環境がJ2EE環境からJava EE 7環境に移行する場合のルール定義ファイルのルールIDを示している。このように、ルールIDの直前に“include”の記述がある場合、“include”により指定されたルールの和集合となるルールが適用される。
【0027】
ここで、“include”の記述がない場合は、ルールセットに含まれる全てのルールが適用される。また、不図示だがルールIDの表記の前に“exclude”の記述がある場合には、ルールIDから除外対象とするルールとなる。さらに、“include”と“exclude”の設定に矛盾が生じる場合には、“exclude”の設定が優先される。
【0028】
図6は、ルールセット定義ファイルの一例である。ルールセット定義ファイルには、非互換検出ルールのセットが記載されている。
図6の記述61は、
図5で記載のアセスメントプロファイルの記述51で指定した、“migration-j2ee-jakartaee8”がルールセットIDであることを示している。記述62a及び記述62bは記述61で指定したIDのルールセットに発生する可能性のある非互換のカテゴリを定義している。例えば記述62aは、基盤サービスに関するルールであること、記述62bはClusterに関するルールであることを表している。記述63a及び記述63bにはルール定義ファイルとなり得るファイル名が記載されている。
【0029】
図7A及び
図7Bは、ルール定義ファイルの一例であり、
図6の記述63bで示すルール定義ファイルである。
図7Aは、ルールIDが“j2ee-cluster-0001”について、
図7BはルールIDが“j2ee-cluster-0002”であるものについて記載したものである。記述70a及び記述70bは、ルールIDである。記述71a及び記述71bは、後述するレポートファイルに記載する項目についてまとめられたものである。711a及び711bは、移行時の難易度を示す。例えば、high、medium、lowの3段階で定義される。一例ではhighは、修正方法がなく代替案の検討が必要な場合、mediumは、修正に置換と関連部分のコード修正が必要な場合、lowは、置換の修正が必要な場合に記述される。記述72a及び記述72bは、ルールIDと対応するファイルの種別を定義している。記述72aと記述72bで記載の文字列は、
図2の記述23に記載のidである文字列を指し、この文字列によってファイルの種別が判定される。例えば
図2の記述24では、記述20aからファイルの拡張子が.xmlのxmlファイルであり、かつJ2eeClusterDefinition(記述22a)というファイル種別特定キーワードが含まれるファイルに対してj2ee-cluster-xmlという文字列を記述23に記載のidとして付与している。そのため、記述72a及び72bの文字列“j2ee-cluster-xml”から、それぞれのファイルがJ2eeClusterDefinition(記述22a)というファイル種別特定キーワードを有していることがわかる。ここで、先述したように、記憶部12にファイル種別特定キーワードと対応するファイル名が記憶されている場合、xmlファイルかつJ2eeClusterDefinitionというファイル種別特定キーワードが含まれるファイルは、Cluster定義ファイルであることをと特定することも可能になる。
【0030】
記述73a及び記述73bは、当該種類のシステム定義情報ファイルが非互換を含むと判定する非互換検出パターンを記述している。非互換検出パターンは、非互換が存在する位置と、非互換検出キーワードの文字列と、を含む。記述74a及び記述74bは、記述73a及び記述73bで記載された非互換検出キーワードがシステム定義情報ファイル内に出現する最大の回数を明記している。例えば、記述74aでは“once”の記載があり、記述73aに記載された非互換検出キーワードが当該ファイル内に出現する回数が最大1回であることを示す。また、記述74bには、“multiple”の記載があり、記述73bの非互換検出キーワードが当該ファイル内に複数回出現し得ることを表している。ただし、別の態様として、例えばシステム定義情報ファイル内に出現する回数が2回、3回、というように具体的に指定される態様であってもよい。
【0031】
なお、アセスメントプロファイル、ルールセット定義ファイルを用意することで、アプリケーションの実行環境の移行元、移行先の組み合わせが複数存在する場合に、各移行元、移行先の組み合わせごとに重複した内容のルール定義ファイルを作成する必要が無くなる。そのため、ルール定義ファイルにおいて、適用すべき非互換検出ルールのリストを冗長な記載なく定義することができるようになる。
【0032】
図8は非互換検出ルールのリストの一例を示す説明の図である。
図8に示す非互換検出ルールのリストは、例えば、
図7A及び
図7Bに示すルール定義ファイルを参照して作成される。
【0033】
非互換検出ルールでは、定義ファイル種別81、非互換箇所82、出現回数83が対応づけられる。なお、非互換箇所82は、アプリケーションの実行環境が移行する際に生じる非互換が生じる箇所を示し、非互換検出キーワードに相当する。また、No.80については、本実施例では数字を用いたが、数字に限らず、例えば、アルファベットや
図7A及び
図7Bの記述70a及び記述70bのルールIDを使用してもよい。
【0034】
次に本実施例における非互換検出処理について説明する。
【0035】
図9及び
図10は、システム定義情報ファイルにおける非互換検出装置の処理フローである。まず、
図9を参照して、システム定義情報ファイルの入出力の処理について説明する。
【0036】
ステップS101で、検出部14は記憶部12に記憶されたファイル種別特定キーワード12aと非互換検出ルール12bを取得する。ステップS102で、収集部11は、アプリケーションに搭載されるシステム定義情報ファイルの読み込みを行う。ステップS103で、ステップS102で読み込んだシステム定義情報ファイルの種別を特定部13により特定する。ステップS104で、検出部14はステップS103で種別を特定した当該ファイルに発生する非互換の検出を行う。ステップS105では、出力部15は検出された非互換の情報をレポートファイルに出力する。非互換の情報としては、例えば、非互換箇所や難易度、移行手順等を出力部15はレポートファイルに出力してもよい。非互換箇所とは、先述したとおり、アプリケーションの実行環境が移行する際に生じる非互換が生じる箇所を示す。難易度は、先述したように移行時の難易度を示す。移行手順は、生じる非互換の具体的な修正方法が記載されている。レポートファイルについては、
図12を用いて後述する。また、本実施例では一つのファイルの非互換の検出が終了するたびに出力部15が検出結果を出力しているが、これに限らなくてもよい。例えば、出力部15は、一つのファイルごとに非互換検出が終わるたびにファイルを閉じ、全てのシステム定義情報ファイルの非互換を検出した後に再びファイルを開くことで検出結果をレポートファイルに出力してもよい。
【0037】
図10は、
図9のステップS102~S104の処理の流れの詳細を例示する。なお、
図10において記載するステップS103及びS104の処理は、
図9において記載したステップS103及びS104の処理と同じものとする。
【0038】
特定部13は、アプリケーションに搭載されているシステム定義情報ファイルのうち、未処理である一つのファイルを開く(S111)。
【0039】
特定部13は、ステップS111で開いたファイルの先頭から2行の読み込みを行う(S112)。特定部13は、ステップS113で、読み込んだ箇所にファイル種別を特定するファイル種別特定キーワードが出現しているか否かを判定する。このとき、ファイル種別特定キーワードが出現した場合(S113、Yesの場合)は、特定部13は出現したファイル種別特定キーワードと対応するファイルの種別を特定し(S103)、ステップS104の処理を実行する。ファイル種別特定キーワードが出現しない場合(S113、Noの場合)、ファイルの種別が特定されないファイルであるため、特定部13はファイルを閉じ(S114)、ステップS115に進む。
【0040】
ステップS104では、検出部14が当該システム定義情報ファイルに発生する非互換の検出を行う。非互換の検出方法については後述する。なお、ファイル種別が特定できたシステム定義ファイルであっても、対応する非互換検出ルールが存在しない場合には、非互換の検出処理を行わずにステップS115に進んでもよい。これにより、非互換の検出処理を行う解析対象となる、システム定義情報ファイル数を減らすことができ、非互換の検出時間が短縮できる。
【0041】
ステップS115では、特定部13は、アプリケーションに搭載されているシステム定義情報ファイル(処理対象のシステム定義情報ファイル)を全て確認したか否かの判別を行う。全てのシステム定義情報ファイルの確認が終了している場合(S115、Yesの場合)は、
図10に示す一連の処理は終了となる。確認が未処理のシステム定義情報ファイルがある場合(S115、Noの場合)、ステップS111に戻り、ステップS111~ステップS115の処理が繰り返される。
【0042】
ステップS104の非互換の検出処理について説明する。システム定義情報ファイルに発生する非互換の検出は、検出部14が当該ファイルの種別に応じた非互換検出ルールの適用をすることで行う。ここで、検出部14は、特定したファイル種別に対応する複数の非互換検出ルールを、当該ファイルに発生する全ての非互換が検出されるまで適用してもいいし、検出された非互換の出現回数に応じて適用する非互換検出ルールの数を減らしていくことにしてもよい。この処理については
図11を用いて後述する。
【0043】
以上の手順により、解析対象のシステム定義情報ファイルに対して、全ての非互換検出ルールを適用することなく、ファイルの種別に応じた非互換検出ルールのみを適用して非互換の検出処理を行うことができる。これにより、1つのシステム定義情報ファイルに対してチェック対象となる非互換の数が従来手法と比較して減少する。その結果として、システム定義情報ファイルの非互換を検出するために要する処理時間が削減されるという効果が得られる。
【0044】
また、本実施形態によれば、一つの解析対象のファイルを開いてから閉じるまでの間に、解析対象のシステム定義情報ファイルの種別を特定し、特定したシステム定義情報ファイルの種類に応じた非互換検出ルールを適用して非互換の検出を行う。一方で、従来手法は、一つの非互換ごとに、全てのシステム定義情報ファイルに対して当該非互換が発生するか否かの確認を行う。この際に、従来手法では、非互換ごとに処理対象となるシステム定義情報ファイルの数と同数のファイルの開閉を行う必要がある。そのため、従来手法と比較して、本実施例ではファイルの開閉処理を減らすこともできる。
【0045】
上述のとおり、システム定義情報ファイルの種別に応じた非互換検出ルールのみを適用して非互換の検出処理を行うことで、1つのシステム定義情報ファイルに対してチェック対象となる非互換の数は従来手法と比較して減少する。ここで、非互換の検出処理を実行している最中に、検出された非互換の出現回数に応じて適用する非互換検出ルールの数を減らしていく場合、1つのシステム定義情報ファイルに対してチェック対象となる非互換の数をさらに減少させることができる。
【0046】
図11を参照して、システム定義情報ファイルから非互換を検出する過程において、非互換検出ルール数を減らしながら非互換を検出する処理の一例を説明する。
【0047】
図11は、
図9のステップS104の非互換の検出処理の流れの一例を示す、非互換検出ルール適用処理におけるフローである。検出部14は、記憶部12に記憶された非互換検出ルールの中から、当該システム定義情報ファイルの種別に対応する全ての非互換検出ルールを取得する(S121)。検出部14は、解析対象のファイルにおいて、取得した非互換検出ルールに記載された出現回数分(
図8に示す出現回数83)の非互換が検出されているか否かを判定する(S122)。解析対象のファイルから規定の回数分の非互換が検出されている場合(S122、Yesの場合)、検出部14は、既定の回数非互換が出現した非互換検出ルールを除外する(S123)。すなわち、検出部14は、以降の処理において適用する非互換検出ルール数を減らしたうえで、ステップS124の非互換の検出に進む。当該システム定義情報ファイルから非互換が規定の回数分、検出されていない場合(S122、Noの場合)は、検出部14は適用する非互換検出ルールの数を減らすことなく、非互換の検出を行う(S124)。ステップS125では、検出部14は解析対象ファイルに発生する非互換を全て検出したか否かを確認する。全ての非互換が検出されている場合(S125、Yesの場合)、非互換の検出処理が終了する。全ての非互換が検出されていない場合(S125、Noの場合)は、ステップS122に戻り、ステップS122~S125の処理が繰り返される。
【0048】
図12は出力部15により出力されるレポートファイルの一例を示す図である。出力部15がレポートファイルに出力する項目は、
図7A及び
図7Bに示すルール定義ファイルを参照して作成される。ただし
図12に示す例では、レポートファイルの項目として、記述131~136が含まれる態様を示すが、その他の項目に対応する情報を有していてもよい。あるいは、レポートファイルの項目は、記述131~136から選択された一部の項目であってもよい。
【0049】
記述131の定義ファイル種別は、非互換が発生するファイルの種別を示す情報であり、
図7の記述72a及び記述72bにより決定される。例えば
図7A及び
図7Bからは、ファイル種別がともにCluster定義ファイルであることがわかる。記述132の非互換内容は
図7A及び
図7Bの記述71a及び記述71bの“description”に記載されている事項が出力される。非互換内容とは検出した非互換の概要である。記述133の行数は、システム定義情報ファイルにおいて非互換が出現している位置(行数)を示している。記述134の非互換箇所は、記述133の行数に出現した非互換検出キーワードが出力される。記述135の難易度は、前述した
図7A及び
図7Bの記述71a及び記述71bの“difficulty”で定義されたものである。本実施例においては、“difficulty”は、high、medium、lowの3段階で定義されているがこれに限らなくてもよい。記述136の移行手順は、
図7A及び
図7Bの記述71a及び記述71bの“instruction”で指示されている事項である。
【0050】
図13に示すシステム定義情報ファイルの例を用いて、本実施形態における具体的な処理の一例を説明する。
【0051】
まず、特定部13は
図13のシステム定義情報ファイルのファイル種別を特定するため、
図13のシステム定義情報ファイルの先頭から2行目までの読み込みを行う。
図13の2行目の記述141に、ファイル種別特定キーワードに該当する“J2eeClusterDefinition”が出現している。そのため、
図3に示したファイル種別特定キーワードリストのデータ行34のファイル種別特定キーワード31を参照することで、
図13のシステム定義情報ファイルの種類をCluster定義ファイルと特定部13は特定することができる。
【0052】
次に、検出部14は
図8に示す非互換検出ルールを適用して、
図13に発生する可能性がある非互換の検出を行う。ここで、
図13のシステム定義情報ファイルの種別がCluster定義ファイルであると特定されているため、適用する非互換検出ルールはCluster定義ファイルに対応している、例えば
図8のデータ行84、データ行85、データ行86の3つである。検出部14は、
図8のデータ行84~86の3つを適用して非互換の検出を行う。
【0053】
図13の6行目の記述143に
図8のデータ行84の非互換箇所82である、“-Dcom.example.jsp.bean.getProperty.UseEmptyStringForNull=true”の非互換検出キーワードが出現している。なお
図8のデータ行84の非互換箇所82の“J2eeClusterDefinition”、“Cluster”、“Common”、“JavaCommandOptions”は、非互換検出キーワードの出現する位置までのパスを示しており、それぞれ
図13の2行目、3行目、4行目、6行目に対応している。また、“contains(text(),‘-Dcom.example.jsp.bean.getProperty.UseEmptyStringForNull=true”は、“JavaCommandOptions”のタグ内に-Dcom.example.jsp.bean.getProperty.UseEmptyStringForNull=trueが出現しているものを非互換として検出することを示している。したがって、検出部14は、
図13の6行目の記述143を非互換箇所として検出する。ここで、“Xms16m”や“-Xmx256m-”(
図13の6行目の記述142)は、コードの一例として記載したものであり、必ずしも記述される必要はない。出力部15は、
図7Aを参照し、記述71aに記載の項目に従い、
図12のNo.1に検出した非互換の情報を記載する。
【0054】
ここで、
図8のデータ行84の出現回数83がonceであるため、
図13のCluster定義ファイルにおいて、
図8のデータ行84の非互換箇所82が
図13の7行目以降に出現することはない。そのため、検出部14は、
図13の7行目以降の非互換検出処理において、適用する非互換検出ルールをデータ行85とデータ行86のものを用いて非互換の検出を行う。つまり、検出部14は、データ行84のルールを以降の処理で適用対象外とすることで、適用する非互換検出ルールの数を減少させる。
【0055】
図13の9行目の記述144と10行目の記述145の非互換検出についても説明する。
図8のデータ行85の非互換箇所は、“J2eeClusterDefinition”、“Cluster”、“Common”、“ClassPaths”、“Location”のパスが順番どおりに全てそろっていれば非互換検出キーワードとして検出されることを示している。そのため、
図13の9行目の記述144と10行目の記述145は、“J2eeClusterDefinition”、“Cluster”、“Common”、“ClassPaths”が、それぞれ
図13の2行目、3行目、4行目、8行目と一致しているため非互換箇所として検出される。出力部15は、
図7Bのルール定義ファイルを参照して、レポートファイルに出力する。出力した結果が
図12のNo.2とNo.3に示すものである。
【0056】
図13の11行目以降の非互換の検出処理について述べる。
図8のデータ行85の出現回数83は、“multiple”であり、
図8のデータ行85の非互換は、Cluster定義ファイルに複数回出現し得ることがわかり、11行目以降にも、
図8のNo.2の非互換が出現する可能性がある。そのため、検出部14は適用する非互換検出ルールを
図8のデータ行85とデータ行86のまま、
図13のCluster定義ファイルの11行目以降に発生する非互換の検出を実行する。
【0057】
以上のように、本実施形態の非互換検出プログラムによれば、アプリケーションに搭載されているシステム定義情報ファイルの種類を特定し、特定した種類に応じた非互換検出キーワードのみを適用して非互換の検出を行う。これにより、非互換の検出にかかる所要時間を減少させることができる。また、本実施形態では、ファイルの種別が特定されないシステム定義情報ファイルについて非互換の検出処理を省略することができる。この側面においても、本実施形態によって非互換の検出にかかる所要時間を減少させることができる。つまり、本実施形態は、1つのシステム定義情報ファイルに対して適用する非互換検出ルールの数の削減と、非互換の検出処理を実行するシステム定義情報ファイルの数の削減との双方の面で、非互換の検出にかかる所要時間を減少させることが可能でもある。
【0058】
図14は、本実施例における非互換検出装置1のハードウェア構成例を示す図である。
図14において、非互換検出装置1は、それぞれバス210で相互に接続されている記憶装置201と、メモリ装置202と、CPU203と、インターフェース装置204と、表示装置205と、入力装置206を有する。
【0059】
非互換検出装置1での処理を実行するプログラムは、例えば記憶装置201やメモリ装置202に記憶される。また、プログラムは最初から記憶装置201に記憶させなくてもよく、コンピュータに挿入可能なフレキシブルディスクや光磁気ディスク等にプログラムを記憶させてもよい。あるいは、ネットワークを介して他のコンピュータや他の記憶装置からプログラムをダウンロードするようにしてもよい。
【0060】
CPU203は、記憶装置201あるいはメモリ装置202に記憶されたプログラムに従って非互換検出装置1に係る演算処理を実行する。インターフェース装置204は、ネットワークを介して他の装置と接続するために用いられる。表示装置205は、プログラムによるGUI(Graphical User Interface)等を表示する。入力装置206は、例えばキーボードやマウス等であり、様々な操作の指示を入力させるために用いられる。なお、上記の説明では、本実施例における非互換検出装置が
図14に示すような単体のコンピュータである例を示したが、非互換検出装置の具体的なハードウェア構成は、発明を実現できる範囲内で適宜変更可能である。例えば、本実施例で説明した一連の処理が、複数のコンピュータで協働して実行されてもよい。また、非互換検出装置として用いるハードウェアの型番や性能も一意に限定される必要はない。
【符号の説明】
【0061】
1 非互換検出装置
11 収集部
12 記憶部
12a ファイル種別特定キーワード
12b 非互換検出ルール
13 特定部
14 検出部
15 出力部
201 記憶装置
202 メモリ装置
203 CPU
204 インターフェース装置
205 表示装置
206 入力装置
210 バス