2010/02/18

Teamstudio Upgrade Filters でより精度の高い非互換検出結果を出すための工夫

昨日、Web セミナーで Teamstudio Upgrade Filters をご紹介させていただきました。そこで今回は Upgrade Filters を使用して非互換検出をご検討されている方にちょっとした Tips です。

非互換検出の精度を高めるためには考慮すべき点がいくつかありますが、今回は典型的な例をご紹介しながらどういう条件を作成すればよいか見ていきます。

たとえば、R5 以前のユーザーで独自に「Replace」というファンクションを作成していた場合、R6 から同名のファンクションが標準で追加されたため衝突が発生してしまいます。これを例にしてご説明しましょう。

この非互換を検出するため Upgrade Filters では下のような条件が記述されています。
赤い四角で囲ってある部分が条件式ですが、お分かりのとおり、そのままでいけば「Replace」ということばを単に探すということになります。

従って、その他の関数、たとえば「ReplaceItemValue」もヒットしたり、英語圏のユーザーの中にはコメントとして良くつかわれることが充分に想定されます。
ではどうしたらいいでしょうか?

Replace 関数は
ret = Replace(array1, array2, array3)
のように記述されるため上記の問題をそれを避けるために検証式を
TMSRTContains( Rich Text; 0; "Replace(" )
と記述し直すとより ReplaceItemValue 関数がヒットしなくなり、より Replace 関数のみにフォーカスが当たるようになります。

実はこれでもまだノーツ式の @Replace との切り分けができていないのですが、本来であれば
TMSRTContains( Rich Text; 0; "Replace(" )
とReplace の前にスペース(△)を一文字入れたいとこです。しかし、
ret=Replace(array1, array2, array3)
のようにスペースがなく保存されているスクリプトも考えられますので、ここでスペースを入れると見落としが発生してしまう可能性が出てきます。

このようにどこまで精度を高くしたいか、コーディングのクセなども考慮して適切と思われる条件にすることが重要になってきます。

新たに追加されたクラスのプロパティやメソッドも同じことが言えます。

可能であれば、一度出た結果に基づいてあまりにも検出された内容が多く関係のないところが検出された場合には、もう一度条件を見直して再度解析できるような余裕がほしいものです。

0 件のコメント:

コメントを投稿