[ 新規に投稿する ]

tagsファイルの内容がおかしいNo.41111
fzok4234 さん 24/03/17 01:26 [ コメントを投稿する ]
  毎度お世話になっております。Fzok4234 です。


さて、「tagsファイルの作成」コマンドで出力された tags ファイルの内容が、対象ファイルの
内容通りにならない不具合が見つかりました。

結論から先に申し上げると、
 1. 強調表示の「行の強調」に該当する項目の正規表現が
   public\s
   などのように末尾の空白文字を含んでいるとき。
 2. 強調表示を「hilightファイル直接指定モード」で読み込んでいるとき。
の内少なくとも 1 つに該当する場合に、生成した tags ファイルの内容がおかしくなります。


再現テストの結果は
https://github.com/Fzok4234/HidemaruBugReport/tree/master/20240317-Tags-Bug
ディレクトリ以下にまとめてあります。以下、特に断りのない限りファイル名はこのディレクトリの
中のものを指します。

まず、下準備として「動作環境」->「その他のコマンド」->「タグジャンプ」のページを
Env.png
の通りに設定しておきます。また、拡張子 .test に対応させる「ファイルタイプ別の設定」を
予め作成しておきます。

対象ファイルの内容は、全てのテストで
Test.test
を用います。この内容の構成は
 1 行目 : クラスの定義。
 2 行目 : メンバーの定義。
となっていて、これらを tags ファイルに登録することを意図しております。

「tagsファイルの作成」コマンドのダイアログは、全てのテストで
Tags.png
の通りにします。ただし、「対象フォルダ」だけはテスト対象のサブディレクトリのローカルパスに
書き換えて実行します。

以下、
 ・強調表示の正規表現に末尾の空白文字を含むか含まないか。
 ・「hilightファイル直接指定モード」を使用しているかいないか。
の組み合わせで行ったテストの手順と結果です。

1. 強調表示の正規表現に末尾の空白文字を含む場合。
 強調表示の定義は
 WithTrailingSpaces/Test.hilight
 を用います。
 
 1-1. 「hilightファイル直接指定モード」を使用する場合。
  拡張子 .test に対応する「ファイルタイプ別の設定」->「強調表示」->「メニュー」から
  「hilightファイル直接指定モード」を有効にして、
  WithTrailingSpaces/Test.hilight
  を指定して適用させます。
  
  適当なサブディレクトリに
  Test.test
  をコピーして、このサブディレクトリを「対象フォルダ」に指定して「tagsファイルの作成」
  コマンドを実行します。
  
  すると、出力された tags ファイルは
  WithTrailingSpaces/File/tags
  のようになります。
  
  結果は、対象ファイルの 1 行目のクラス定義が抜け落ちているうえ、2 行目のメンバー定義の
  末尾に余計なゴミが付いた状態で、正常に出力できませんでした。
  
 1-2. 「hilightファイル直接指定モード」を使用しない場合。
  拡張子 .test に対応する「ファイルタイプ別の設定」->「強調表示」->「読み込み」から
  WithTrailingSpaces/Test.hilight
  を読み込んで適用させ、レジストリに保存された状態にします。
  
  1-1. と同様に「tagsファイルの作成」コマンドで tags ファイルを出力します。その内容は
  WithTrailingSpaces/Registry/tags
  のようになります。
  
  結果は、何も出力されておらず 0 行の空ファイルとなっており、正常に出力できませんでした。
  
2. 強調表示の正規表現に末尾の空白文字を含まない場合。
 強調表示の定義は
 NoTrailingSpaces/Test.hilight
 を用います。
 
 2-1. 「hilightファイル直接指定モード」を使用する場合。
  NoTrailingSpaces/Test.hilight
  を 1-1. と同様に「hilightファイル直接指定モード」で指定の上で、「tagsファイルの作成」
  コマンドで tags ファイルを出力します。その内容は
  NoTrailingSpaces/File/tags
  のようになります。
  
  結果は、何も出力されておらず 0 行の空ファイルとなっており、正常に出力できませんでした。
  
 2-2. 「hilightファイル直接指定モード」を使用しない場合。
  NoTrailingSpaces/Test.hilight
  を 1-2. と同様にレジストリへ読み込んだ上で、「tagsファイルの作成」コマンドで tags ファイルを
  出力します。その内容は
  NoTrailingSpaces/Registry/tags
  のようになります。
  
  結果は、1 行目のクラス定義と 2 行目のメンバー定義が全て含まれ、また、余計なゴミも付かずに
  意図したとおりの正常な出力となっています。
  
まとめとして、tags ファイルが正常に出力できたのは 2-2. の場合すなわち、
 ・「行の強調」の強調表示の正規表現に末尾の空白文字を含まないこと。
 ・強調表示を「hilightファイル直接指定モード」で読み込まずに通常通りにレジストリに
  保存していること。
の全ての条件を満たしているときのみでした。これ以外では異常な出力になってしまいます。


この不具合のため、現状では tags ファイルの機能がほとんど使い物にならない状態です。早期の
不具合の修正よろしくお願い申し上げます。


対象の秀丸エディタは 9.32β4 Float x64 です。


[ ]
RE:41111 tagsファイルの内容がおかしいNo.41115
秀丸担当 さん 24/03/18 16:55 [ コメントを投稿する ]
  バグ情報ありがとうございます。
正規表現による違いの問題の場合、調べてみたところ、[単語の検索]がONによって違いが出てしまっていました。
とりあえず[単語の検索]をOFF相当のものにするとよかったですが、これがONでもできるように修正します。

hilightファイル直接指定モードかどうかによる違いは、いまのところ再現できず不明です。
パスの指定などで違いがあるのかもしれません。
原因が分かり次第修正します。
[ ]
RE:41115 tagsファイルの内容がおかしいNo.41116
fzok4234 さん 24/03/18 17:37 [ コメントを投稿する ]
  不具合修正のご検討ありがとうございます。

> hilightファイル直接指定モードかどうかによる違いは、いまのところ再現できず不明です。
> パスの指定などで違いがあるのかもしれません。

当方で「hilightファイル直接指定モード」でテストしたときの各 Test.hilight の置き場所は、
「動作環境」->「環境」の「設定ファイル用のフォルダ」で設定したもので、デフォルトのまま
変えていません。

各 Test.hilight ファイルのエンコードは「UTF-16LE、BOM 有り、CRLF」です。また、
「hilightファイル直接指定モード」は「強調表示」と「複数行コメント」との両方で有効に
しました。

正規表現 DLL は HmJreSelect.dll 0.20 を指定しており、デフォルトの HmJre.dll 5.34 に
丸投げの形となっています。

もし、そちらでの検証の際に GitHub のページに表示されたコードを「一部だけ抜粋してコピペ」
したのであれば、上記の条件と異なるために再現しないかもしれません。各 Test.hilight の
正確な内容の入手は
git clone https://github.com/Fzok4234/HidemaruBugReport.git
コマンドでバグ報告用リポジトリを丸ごとダウンロードすれば確実に行えます。


[ ]
RE:41116 tagsファイルの内容がおかしいNo.41135
秀丸担当 さん 24/03/22 11:28 [ コメントを投稿する ]
  情報ありがとうございます。
調べてみて、原因がわかりました。
また次のβ版で修正します。
[ ]
RE:41135 tagsファイルの内容がおかしいNo.41148
fzok4234 さん 24/03/31 04:17 [ コメントを投稿する ]
  9.32 正式版にて正常に動作することが確認できました。修正ありがとうございます。


[ ]

[ 新規に投稿する ]